Xmlreader跳过兄弟
本文关键字:兄弟 Xmlreader | 更新日期: 2023-09-27 18:05:46
我使用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文件,缩进并保存它时,节点不会跳过。
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-loop条件中使用IsStartElement
来解决。