如何迭代到下一个同级xml元素

本文关键字:下一个 xml 元素 何迭代 迭代 | 更新日期: 2023-09-27 18:14:30

假设您有以下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而不是一个合理的处理

如何迭代到下一个同级xml元素

您可以使用ElementsAfterSelf:

var nextElement = currentElement.ElementsAfterSelf("File").FirstOrDefault();
if (nextElement != null)
{
    ...
}

或者,尝试重构您的代码,以便您可以在所有元素上使用循环,以:

开始:
foreach (var fileElement in parentElement.Elements("File"))
{
    ...
}

(在这两种情况下,如果只需要下一个元素,则可以省略元素名称,无论它是什么。)

据我所知,您在这里提供的XML结构不是正确的或标准的结构。我可能错了,但这应该是这样的:

<root>
  <File>
      <Name>a.txt</Name>
      <Version>1.5</Version>
  </File>
  <File>
      <Name>b.txt</Name> 
      <Version>1.0</Version>
  </File>
</root>

现在您可以使用Lambda表达式轻松地跟踪标签Name&Version的值

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
}