C# 4.0 如何基于同一组中的另一个子节点获取子节点值
我正在用C#开发,正在处理来自外部soap调用的xml。 我已将xml响应加载到XElement中 给定以下xml存根C# 4.0 如何基于同一组中的另一个子节点获取子节点值,c#-4.0,xpath,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>con
<record>
<node>
<a>My title</a>
<name>title_en</name>
</node>
<node>
<a>...</a>
<name>contact_name</name>
</node>
.....
</record>
如果有更好的方法可以使用,或者有其他关于如何执行查询的建议,我愿意接受
提前感谢。请使用以下选项:
var title = doc.Descendants("node")
.Where(x => (string)x.Element("name") == "title_en")
.Select(x => (string)x.Element("a"))
.FirstOrDefault();
使用以下命令:
var title = doc.Descendants("node")
.Where(x => (string)x.Element("name") == "title_en")
.Select(x => (string)x.Element("a"))
.FirstOrDefault();
您需要一个谓词来约束所需的节点元素:
/record/node[name = 'title_en']/a
您将此表达式理解为“查找记录元素,查找其名为node
的所有子元素,这些子元素具有值为“title_en”的name
子元素,并且对于这些子元素中的每一个,都需要一个谓词来约束您需要的节点元素:
/record/node[name = 'title_en']/a
您将此表达式理解为“查找记录元素,查找其名为
node
的所有子元素,这些子元素具有值为“title\en”的name
子元素,对于每个子元素,查找所有a
children”xpath/record/node[name='title\en']/a
将获得相关元素。目前还不清楚这个问题和XSLT有什么关系,也许会考虑延迟。“IANROBRATS我删除了XSLT标签。我在写这些问题的时候正在看代码,我把它添加到了我的错误中。cheers@IanRoberts您的解决方案工作得很好。另一个xpath是/record/node/a[以下同级::name[.='title\u en']]
xpath/record/node[name='title\u en']]/a
将获得相关元素。P.S。目前还不清楚这个问题和XSLT有什么关系,也许会考虑延迟。“IANROBRATS我删除了XSLT标签。我在写这些问题的时候正在看代码,我把它添加到了我的错误中。cheers@IanRoberts您的解决方案工作得很好。另一个xpath是/record/node/a[以下兄弟姐妹::name[.='title\u en']]
建议不错,但我更喜欢使用xpath表达式。建议不错,但我更喜欢使用xpath表达式。