0

所以,我只需要那些直接在里面<and>而不是在里面的equals的值<not>。所以,我需要以下:7942 和 6252。我如何获得这些?

<aaa>
    <and>
        <equal ident="qwe">7942</equal>
        <equal ident="qwe">6252</equal>
        <not>
            <equal ident="qwe">1056</equal>
        </not>
        <not>
            <equal ident="qwe">6562</equal>
        </not>
    </and>
</aaa>
4

1 回答 1

0

这是一个无效的 xml,您无法使用 Linq 解析它,或者您有拼写错误,并且开始标签名称应与结束标签名称匹配,例如:

<aaa>
  <and>
    <equal ident="qwe">7942</equal>
    <equal ident="qwe">6252</equal>
    <not>
      <equal ident="qwe">1056</equal>
    </not>
    <not>
      <equal ident="qwe">6562</equal>
    </not>
  </and>
</aaa>

解析这个 xml 看起来像:

var xdoc = XDocument.Load(path_to_xml);
var result = xdoc.Descendants("and").Elements("equal").Select(e => (int)e);

给出:

7942
6252

与 XPath 相同

var result = xdoc.XPathSelectElements("//and/equal").Select(e => (int)e);
于 2013-09-26T11:32:18.870 回答