2012-12-13 56 views
0

我正在使用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

xpath'/ record/node [name ='title_en']/a'会得到相关的元素。 –

+0

P.S.目前还不清楚这个问题与XSLT有什么关系,可能是考虑重新签署。 –

+0

@IanRoberts我删除了XSLT标签。我在写这些问题时正在查看代码,并将其添加为我的错误。欢呼 – Arnej65

回答

2

你需要一个谓词来约束你需要的节点元素:

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

你读这个表达式为“查找记录的元素,发现其所有子元素名为node,它有一个name子值“title_en”,并为每个这些发现全部a儿童“

1

使用此:

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

好的建议,但我更喜欢使用XPath表达式。 – Arnej65

相关问题