2009-05-24 9 views
2

는 말 :readXML을 사용하여 xml 속성을 읽으려면 어떻게해야합니까? dataset.readxml은 어떻게 테이블로 변환됩니까? xml 파일은 다음과 같습니다 경우 그냥되는 ReadXml의 결과 테이블이 생겼 방법을 알고 싶어요

ds.ReadXml(xml); 
... ds.Tables[i] 
:이 같은 테이블 컬렉션을 직접 테이블을 참조 할 수 있습니다
<item attr="some attribute"> 
<descirption>anything</description> 
</item> 

ds.Tables[3].Rows[i].ItemArray(j); 

을하지만 어떻게 내가 어떤 XML 노드의 "속성"을 액세스 할 수 있습니다

그때 행 컬렉션을 사용 행과 열을 액세스 할 수 있습니까?

답변

0

행에 있습니다. 나는 당신의 XML을 조금 :)

var xml = "<item attr=\"some attribute\"><description>anything</description></item>"; 
var ds = new DataSet(); 

ds.ReadXml(new StringReader(xml), XmlReadMode.Auto); 

var ia = ds.Tables[0].Rows[0].ItemArray; 
var att = ia[1]; // att == "some attribute" 

당신은 스키마가없는 경우, 당신은 그것이 무엇인지 확인하기 위해 열을 확인해야 할 수도 고정.

설명 : 사용자가 스키마 (XmlReadMode.Auto)를 유추하게됩니다. Rows가 순서대로 속성을 추가 한 다음 요소의 값을 추가 할 때 루트 노드 아래의 요소를 사용합니다.

var xml = "<items> 
      <item attr1='attr1' attr2='attr2'> 
       <description>desc1</description> 
      </item> 
      <item attr1='attr3' attr2='attr4'> 
       <description>desc2</description></item> 
      </items>"; 

... 예를 들어 다음과 같은 XML에 대한 그래서 나는 ATTR1, ATTR2 및 설명 열 두 개의 행 (각 항목에 대해 하나)를 얻을 것이다. 스키마를 사용하여 XML을 해석하는 방식을 변경할 수 있습니다.

+0

itemArray [1]? 왜 "1"? 어떤 중요성? 설명을 읽으려면 ItemArray [0]을 사용해야합니다. 속성이 결국 열로 누적된다고 말하는 것입니까? description 태그에 속성이 있으면 어떻게됩니까? 어떻게 접근할까요? – Ayyash