这是我正在使用的XML代码:
$2.50 20 $3.00 20 $1.50 10
然后我写了一个简单的代码来练习使用XPath:
load('sample.xml'); $xpathvar = new Domxpath($xmldoc); $queryResult = $xpathvar->query('//lemonade/price'); foreach($queryResult as $result) { echo $result->textContent; } ?>
该代码运行良好,按预期输出所有柠檬水价格值.现在,当我更改查询字符串以仅选择属性设置为某个值的元素时,例如
//柠檬水[供应商= "母亲"] /价格
要么
//柠檬水[ID = "1"] /价格
它不起作用,根本没有输出.我究竟做错了什么?
试试这个:
//lemonade[@id="1"]/price
要么
//lemonade[@supplier="mother"]/price
如果没有"@",它会查找具有该名称的子元素而不是属性.
这只是切线相关,但是当您在知道结构的文档上使用XPath时,请不要使用"// some-element-name".这是一个非常好的快速示例,但是当您使用该查询命中一个巨大的xml文件时,特别是如果它后面跟着一些复杂的东西,您将很快遇到性能问题.
库存/饮料/柠檬水[@供应商= "妈妈"] /价格
你必须使用@符号来表示谓词中的属性,如下所示://lemonade[@supplier="mother"]/price
那就是全部.