C# 如何编写xpath来提取节点值,并在属性和值上设置条件
使用我的c#应用程序,我需要编写一个xpath来检查属性为C# 如何编写xpath来提取节点值,并在属性和值上设置条件,c#,xml,xpath,C#,Xml,Xpath,使用我的c#应用程序,我需要编写一个xpath来检查属性为alias的节点是否有值、title或keywords,包含字符串值,比如knowledge返回属性为alias,description的节点值 我的示例xml如下所示。我需要xml中的值所需描述 <?xml version="1.0" encoding="UTF-8"?> <nodes> <node> <data alias="title">knowledge is power&
alias
的节点是否有值、title
或keywords
,包含字符串值,比如knowledge
返回属性为alias
,description
的节点值
我的示例xml如下所示。我需要xml中的值所需描述
<?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>
您需要在或的两侧指定@alias:
if (xdoc.SelectNodes("nodes/node/data[@alias='title' or @alias='keywords']/[contains(., 'knowledge')]").Count > 0)
if (xdoc.SelectNodes("nodes/node/data[@alias='title' or @alias='keywords']/[contains(., 'knowledge')]").Count > 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();
}
}