我使用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文件,缩进并保存它时,节点不会跳过。
发布于 2011-08-17 22:51:55
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来解决这个问题。
https://stackoverflow.com/questions/7093238
复制相似问题