2011-08-25 5 views
5

XmlReaderを使用してXMLファイルを解析すると、XMLファイルが適切に書式設定されているかどうかによって結果が異なります。XmlReader - 改行のないxmlファイルの読み込みに問題があります

XmlReader reader = new XmlTextReader(xmlfile); 
reader.MoveToContent(); 
while (reader.Read()) 
{ 
    switch (reader.NodeType) 
    { 
     case XmlNodeType.Element: 
      if (reader.Name == "entry") 
      { 
       Console.WriteLine(reader.ReadElementContentAsString()); 
      } 
      break; 
    } 
} 

そして、私が使用してきたXMLコンテンツさ:

これは私が使用しているコードがある

<xport><meta><columns>5</columns><legend><entry>AVERAGE:host:ed402b4d-71e7-4a8d-be29-ab6e54e955c8:memory_total_kib</entry><entry>AVERAGE:host:ed402b4d-71e7-4a8d-be29-ab6e54e955c8:memory_free_kib</entry><entry>AVERAGE:host:ed402b4d-71e7-4a8d-be29-ab6e54e955c8:xapi_memory_usage_kib</entry><entry>AVERAGE:host:ed402b4d-71e7-4a8d-be29-ab6e54e955c8:xapi_free_memory_kib</entry><entry>AVERAGE:host:ed402b4d-71e7-4a8d-be29-ab6e54e955c8:xapi_live_memory_kib</entry></legend></meta></xport> 

コードをプリントアウトのみ3行、それが本当にすべき私は何かが不足していると思いますが、白い空白がない場合、同じコードが同じXMLファイルで異なる結果を生成することは私には意味がありません。

答えて

7

は、要素を消費し、ちょうど次の要素の前に「カーソル」を配置しますあなたは[ReadElementContentAsString]呼び出しているWhy does XmlReader skip every other element if there is no whitespace separator?

を参照してください。次に、カーソルを(たとえば、要素内のテキストノードに)移動するReadをもう一度呼び出しています。 (ほぼ正確に他の質問のように)

変更ループ:

while (!reader.EOF) 
{ 
    if (reader.NodeType == XmlNodeType.Element && reader.Name == "entry") 
    { 
     Console.WriteLine(reader.ReadElementContentAsString()); 
    } 
    else 
    { 
     reader.Read(); 
    } 
} 
+0

感謝。私はこれを探して誓った。 – rabin

+1

SOの内部検索で検索しましたか?それはあまり良くないので、Googleははるかに優れている;) –

関連する問題