2012-11-14 2 views
0

i를 XML 파일에 다음이 내 코드에서XmlNodeReader가 XML의 닫는 태그를 읽는 이유는 무엇입니까?

<MyTag>Inner Text</MyTag> 

내가 xml 파일 읽기 위해 다음과 같은 한 : 성공적으로이에 읽는 XML의 <MyTag>을 읽은 후

XmlNodeReader nodeReader = new XmlNodeReader(myXmlDoc); 
while (nodeReader.Read()); 
{ 
    string temp = nodeReader.Name; 
} 

을 공란으로 만들고 다음 태그로 이동하십시오. 왜 그런가요?

편집 :

는 또한 올바르게 그러나, 두 번째 요소의 내부 텍스트를 통해 오지 않습니다의 첫 번째 요소는 읽는 것으로 나타났습니다.

+0

Linq2Xml을 사용하지 않는 이유는 무엇입니까? 나는 쉽게 찾는다. –

답변

0

';'이 (가) 있으므로 루프가 빈 루프라는 점에 유의하십시오. while 회선에서는 아무 것도 읽지 않고 독자를 맨 끝으로 이동시킵니다. ';'을 제거하십시오. 그리고 당신은 더 나은 결과를 가져야합니다. 다음은 그 예입니다 :

static void Main(string[] args) 
    { 
     XmlDocument myXmlDoc = new XmlDocument(); 
     myXmlDoc.LoadXml("<MyTag>Inner Text</MyTag>"); 

     XmlNodeReader nodeReader = new XmlNodeReader(myXmlDoc); 
     while (nodeReader.Read()) 
     { 
      Console.WriteLine(
       "Node Type : {0}, Node Name: {1}, Node Value {2}", 
       nodeReader.NodeType, 
       nodeReader.Name, 
       nodeReader.Value); 
     } 

    } 

결과는 다음과 같습니다.

Node Type : Element, Node Name: MyTag, Node Value 
Node Type : Text, Node Name: , Node Value Inner Text 
Node Type : EndElement, Node Name: MyTag, Node Value 

계속하려면 아무 키나 누르십시오. . .

텍스트 노드의 경우 요소와 특성 만 이름을 가지므로 이름은 비어 있습니다.

관련 문제