【问题标题】:Fetch single XML node using LINQ使用 LINQ 获取单个 XML 节点
【发布时间】:2011-08-25 07:10:14
【问题描述】:

我有以下 XML

<?xml version="1.0" encoding="utf-8"?>
<thesaurus>
    <wordblock>
        <term type="forbidden" lang="en" termid="27561">
            <value>710 REACTOR</value>
            <historynote>Prior to May 1993, this was a valid ETDE descriptor.</historynote>
        </term>
        <dates>
            <date type="created">2000-04-12</date>
            <date type="modified">2000-04-12</date>
        </dates>
        <terms>
            <term rel="SEE" lang="en" termid="3124" type="valid">
                <value>ENRICHED URANIUM REACTORS</value>
            </term>
            <term rel="SEE" lang="en" termid="3387" type="valid">
                <value>FAST REACTORS</value>
            </term>
            <term rel="SEE" lang="en" termid="3876" type="valid">
                <value>GAS COOLED REACTORS</value>
            </term>
            <term rel="SEE" lang="en" termid="6199" type="valid">
                <value>MOBILE REACTORS</value>
            </term>
            <term rel="SEE" lang="en" termid="7969" type="valid">
                <value>PROPULSION REACTORS</value>
            </term>
        </terms>
    </wordblock>
    <wordblock>
      [...]
      [...]
      [...]
   </wordblock>
</thesaurus>

我正在尝试使用 LINQ 解析 XML 并获取特定节点。在上面的例子中,我需要匹配值“710 REACTOR”,并在同一个&lt;wordblock&gt; 节点内获取相应的&lt;terms&gt; 节点。我对 LINQ 语法不是很熟悉,因此非常感谢任何帮助。

【问题讨论】:

    标签: xml linq parsing


    【解决方案1】:

    LINQ 在这种情况下不会有太大用处。使用 XMLDocument 怎么样?

    XmlDocument xmlDoc = new XmlDocument();
    xmlDoc.Load('your xml');
    XmlNode node =  xmlDoc.SelectSingleNode("//WordBlock/term[value = '710 REACTOR']");
    

    【讨论】:

      【解决方案2】:

      试试

      XDocument xdoc = XDocument.Load(PATH_TO_YOUR_DOCUMENT);
      var termNodes = from x in xdoc.Descendants("term") 
                      where x.Element("value").Value == "710 REACTOR" 
                      select x;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-12-03
        • 2011-08-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多