1

考虑您具有以下 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 而不是一个合理的句柄

4

2 回答 2

1

你可以使用ElementsAfterSelf

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

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

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

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

于 2013-05-19T13:00:00.833 回答
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 表达式轻松跟踪标签 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
}
于 2013-05-19T13:16:19.790 回答