XPath 多条件查询语句

有这样一个xml:

<?xml version=/"1.0/" encoding=/"ISO-8859-1/"?> 
<Test>

<cell><data type="String">Alpha</data></cell> 
<cell><data type="Number">100</data></cell> 
<cell><data type="Number">200</data></cell>
<cell><data type="Boolean">true</data></cell> 
</Test> 

要求查找含有 data节点满足 type = String 且 inner text = Alpha 的所有cell 节点

Xpath 为: //cell[data[text()=’Alpha’] and data[@type=’String’]]
或 //cell[data[text()=’Alpha’ and @type=’String’]]
分析下://cell表示搜索所有的cell节点
[]里面是条件满足了这个条件的cell节点才会被搜索出来
有@的表示节点的属性,节点的value用text()=“”表示
data[text()=’Alpha’ and @type=’String’] 有这样(innertext = Alpha 且 type = String )的子节点才能被搜索出来
多个条件用and 连接

如果在加一层结点

string xmlPayLoad = "<?xml version=/"1.0/" encoding=/"ISO-8859-1/"?>" + 
"<test>" + 
@"<row>" + 
"<cell><data type=/"String/">Alpha</data></cell>" + 
"<cell><data type=/"Number/">100</data></cell>" + 
"<cell><data type=/"Number/">200</data></cell>" + 
"<cell><data type=/"Boolean/"></data></cell>" + 
"</row>" + 
"<row>" + 
"<cell><data type=/"String/">Gamma</data></cell>" + 
"<cell><data type=/"Number/">12</data></cell>" + 
"<cell><data type=/"Number/">25</data></cell>" + 
"<cell><data type=/"Boolean/">1</data></cell>" + 
"</row>" + 
"</test>"; 
XmlDocument document = new XmlDocument(); 
document.LoadXml(xmlPayLoad);
string xmlPath = "//row[cell/data[text()='1'] and cell/data[@type='Boolean']]"; 
XmlNodeList nodeList = document.SelectNodes(xmlPath); 
Console.WriteLine("nodeList.Count:" + nodeList.Count); 
Console.ReadLine();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值