为什么我不能在某种条件下获得特定节点?

时间:2012-03-06 10:14:30

标签: c# xml xpath xpathnavigator

为什么这个xpath不能和我一起使用?如果title

,我想要当前language _id =2
./title[language_id=2]

<news pnumber="1" id="1"><event_id>578</event_id><event_type_id>1</event_type_id><language_id>2</language_id><title>meeting</title></news>



<news pnumber="1" id="1"><event_id>578</event_id><event_type_id>1</event_type_id><language_id>1</language_id><title>meeting</title></news>

3 个答案:

答案 0 :(得分:3)

正确的XPath表达式是

//title[../language_id=2]

答案 1 :(得分:2)

要避开反转轴,请使用

self::*[language_id=2]/title.

答案 2 :(得分:1)

首先在XML中添加root:

XDocument doc = XDocument.Load(xmlFilePath);

var result=  doc.Descendants("news")
             .Where(x=>x.Attribute("id") != null && x.Attribute("id").Value = "1")
             .Select(x=>x.Descendants("title").First().Value);

以下是此linq2xml的说明:

首先加载XML文件(也可以解析xml字符串):

XDocument.Load(xmlFilePath);

找到您的news元素:

doc.Descendants("news")

news个元素之间选择具有id=1的元素:

Where(x=>x.Attribute("id") != null && x.Attribute("id").Value = "1")

从每个已过滤的项目中选择第一个标题:

x.Descendants("title").First().Value