如何根据同一组中的另一个子节点获取子节点值

时间:2012-12-13 13:19:11

标签: c#-4.0 xpath

我正在使用C#开发,并且正在从外部soap调用处理xml。 我已将xml响应加载到XElement中。

给出以下xml存根

<record>
   <node>
       <a>My title</a>
       <name>title_en</name>
   </node>
   <node>
      <a>...</a>
      <name>contact_name</name>
   </node>
   .....
</record>

在C#中使用xpath:在使用方法XPathSelectElement时,我正在尝试执行以下操作。

其中

\record\node\name == 'title_en' select \record\node\a

如果有更好的使用方法或其他建议如何预先形成查询,我愿意接受。

提前致谢。

2 个答案:

答案 0 :(得分:2)

您需要谓词来约束您需要的节点元素:

/record/node[name = 'title_en']/a

您将此表达式读作“查找记录元素,找到名为node的所有子元素,其中name子元素值为”title_en“,并且每个元素都找到{{1}儿童“

答案 1 :(得分:1)

使用此:

var title = doc.Descendants("node")
               .Where(x => (string)x.Element("name") == "title_en")
               .Select(x => (string)x.Element("a"))
               .FirstOrDefault();