XmlReader – 读取没有换行符的xml文件的问题

当我使用XmlReader解析XML文件时,我会得到不同的结果,具体取决于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内容是:

 5AVERAGE:host:ed402b4d-71e7-4a8d-be29-ab6e54e955c8:memory_total_kibAVERAGE:host:ed402b4d-71e7-4a8d-be29-ab6e54e955c8:memory_free_kibAVERAGE:host:ed402b4d-71e7-4a8d-be29-ab6e54e955c8:xapi_memory_usage_kibAVERAGE:host:ed402b4d-71e7-4a8d-be29-ab6e54e955c8:xapi_free_memory_kibAVERAGE:host:ed402b4d-71e7-4a8d-be29-ab6e54e955c8:xapi_live_memory_kib 

代码打印出来只有3行,当它真的应该打印5.我想我错过了一些东西,但是对我来说没有意义的是,相同的代码会在同一个XML文件上产生不同的结果有白色空间。

如果没有空格分隔符,请参阅为什么XmlReader会跳过所有其他元素?

您正在调用[ ReadElementContentAsString ],它将使用该元素并将“光标”放在下一个元素之前。 然后再次调用Read,将光标移动(例如,移动到元素中的文本节点)。

修改循环(几乎与其他问题完全一样):

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