如何使用linq解析此xml?

时间:2013-09-25 21:59:26

标签: linq linq-to-xml

因此,我只需要在<and>内而不在<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>

1 个答案:

答案 0 :(得分: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);