2011-08-25 11 views
5

जब मैं एक्सएमएल फ़ाइल को पार्स करने के लिए XmlReader का उपयोग करता हूं, तो मुझे अलग-अलग परिणाम मिलते हैं कि 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; 
    } 
} 

और एक्सएमएल सामग्री मैं का उपयोग कर रहा है:

इस कोड मैं का उपयोग कर रहा है

<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 लाइनों, जब यह वास्तव में होना चाहिए प्रिंटिंग 5. मुझे लगता है कि मुझे कुछ याद आ रही है, लेकिन यह मुझे समझ में नहीं आता है कि एक ही कोड उसी एक्सएमएल फ़ाइल पर अलग-अलग परिणाम देगा जब मेरे पास सफेद-रिक्त स्थान नहीं होंगे।

उत्तर

7

Why does XmlReader skip every other element if there is no whitespace separator?

आप [ReadElementContentAsString] कॉल कर रहे हैं, जो तत्व उपभोग करते हैं और "कर्सर" जगह बस अगले तत्व से पहले होगा देखें। फिर आप फिर से पढ़ रहे हैं, जो कर्सर को ले जाता है (उदा। तत्व के भीतर पाठ नोड के लिए)।

संशोधित लूप (लगभग ठीक अन्य प्रश्न में की तरह):

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

धन्यवाद। मैं कसम खाता हूं कि मैंने इसके लिए एसओ खोजा था। – rabin

+1

क्या आपने एसओ की आंतरिक खोज का उपयोग करके खोज की? क्योंकि यह बहुत अच्छा नहीं है, Google बहुत बेहतर है;) –

संबंधित मुद्दे