我使用Xmlreader来解析xml文件。
我的方法看起来像
string path = @"E:\tmp\testxml.xml";
using (var reader = XmlReader.Create(path))
{
bool isOnNode = reader.ReadToDescendant("resource");
while (isOnNode)
{
var element = (XElement)XNode.ReadFrom(reader);
isOnNode = reader.ReadToNextSibling("resource");
}
}
但xmlreader跳过兄弟节点“resource”。 此外,当我使用visual studio打开xml文件时,缩进并保存它,节点不会被跳过。
答案 0 :(得分:2)
XNode.ReadFrom
方法将阅读器放在它读取的子树的结束元素之后。如果文件中没有空格,则这将是下一个<resource>
元素。然后ReadToNextSibling
调用会跳过此元素。
以下内容应该解决它:
string path = @"E:\tmp\testxml.xml";
using( var reader = XmlReader.Create(path) )
{
bool isOnNode = reader.ReadToDescendant("resource");
while( isOnNode )
{
var element = (XElement)XNode.ReadFrom(reader);
if( !reader.IsStartElement("resource") )
isOnNode = reader.ReadToNextSibling("resource");
}
}
如果没有非<resource>
元素作为<resource>
元素的兄弟元素,那么问题也可以通过在while循环条件中使用IsStartElement
来解决。