我正在使用XPath的contains函数来查询下面XML文件的“description”元素。当使用“全新”进行查询时(如下面的xpath表达式代码所示),它将检索XML数据。但是,如果使用“低价全新”,则不会检索到任何内容。显而易见的结论是,contains函数只检索精确匹配的文本字符串,如果单词彼此分开,则不起作用,如下面的description元素所示。
当使用字符串“low price new new”查询description元素时,XPath是否有一个函数或方法可以检索下面的XML数据?谢谢!
$xmldoc = simplexml_load_file("products.xml");
$query = $xmldoc->xpath('/products/product[contains(description, "brand new")]');
foreach($query as $Products) {
echo $Products->name . " ";
echo $Products->description . "<br>";
}
<products>
<product type="Electronics">
<name>Desktop</name>
<price>499.99</price>
<store>Best Buy</store>
<description>low price, 17 inch screen, brand new </description>
</product>
</products>
答案 0 :(得分:0)
一种方法是使用
/products/product[contains(description, "brand new") and contains(description, "low price")]
当然,这是非常具体的例子。
你可以通过分割你的字符串来概括一点。在Xpath 1.0中:
/ products / product [contains(description,“brand”)and contains(description,“new”)and contains(description,“low”)and contains(description,“price”)]
在Xpath 2.0中:
/ products / product [contains(description,tokenize(“low price new new”,“\ s +”))]