考虑您有以下xml结构:
<root>
<File> a.txt
<Version> 1.5 </Version>
</File>
<File> b.txt
<Version> 1.0 </Version>
</File>
</root>
如果我持有一个包含该元素的变量:
<File> a.txt
<Version> 1.5 </Version>
</File>
如何获得下一个元素的句柄:
<File> b.txt
<Version> 1.0 </Version>
</File>
我一直在尝试XElement.nextNode()
这样的事情,但是得到了null而不是合理的句柄
答案 0 :(得分:1)
您可以使用ElementsAfterSelf
:
var nextElement = currentElement.ElementsAfterSelf("File").FirstOrDefault();
if (nextElement != null)
{
...
}
或者,尝试重构代码,以便可以在所有元素上使用循环开头:
foreach (var fileElement in parentElement.Elements("File"))
{
...
}
(在这两种情况下,如果你只想要下一个元素,你可以省略元素名称。)
答案 1 :(得分:0)
据我所知,您在此提供的XML结构不正确或标准结构。我可能错了,但这应该是:
<root>
<File>
<Name>a.txt</Name>
<Version>1.5</Version>
</File>
<File>
<Name>b.txt</Name>
<Version>1.0</Version>
</File>
</root>
现在,您可以使用Lambda表达式
轻松跟踪标记名称和版本的值XDocument xd = XDocument.Load("XMLPath/xmlname.xml");
IEnumerable<XElement> lstxe = xdoc.XPathSelectElements("//root/File");
foreach(XElement xele in lstxe )
{
// here you can get the each value
}