如何编写xpath以提取具有属性和值的条件的节点值

时间:2016-10-03 15:23:03

标签: c# xml xpath

使用我的c#应用程序,我需要编写一个xpath,检查具有属性alias的节点是否包含值titlekeywords,包含字符串值{{1 }}返回knowledgealias的节点值。

我的样本xml如下。我将需要xml

中的值description
required description

我正在尝试这些线路,但它似乎无法正常工作

<?xml version="1.0" encoding="UTF-8"?>
<nodes>
 <node> 
   <data alias="title">knowledge is power</data>
   <data alias="description">required description</data>
   <data alias="keywords">knowledge, power</data>   
</node>

 <node> 
   <data alias="title">Another title</data>
   <data alias="description">Lorem ipsum dolor sit amet, consectetur adipiscing elit </data>
   <data alias="keywords">Lorem, Ipsum</data>
 </node>
</nodes>

2 个答案:

答案 0 :(得分:1)

您需要在or:

的两侧指定@alias
if (xdoc.SelectNodes("nodes/node/data[@alias='title' or @alias='keywords']/[contains(., 'knowledge')]").Count > 0)

答案 1 :(得分:0)

string[] text = new string[10];
if (xDoc.SelectNodes("nodes/node/data[@alias='title' or @alias='keywords'][contains(text(),'knowledge')]").Count > 0)
{
    var xmlNodes = xDoc.SelectNodes("nodes/node/data[@alias='title' or @alias='keywords'][contains(text(),'knowledge')]");
    int i=-1;
    foreach (XmlNode item in xmlNodes)
    {
        i++;
        text[i] = item.InnerText.ToString();
    }
}