2014-02-08 110 views
0

我正在使用XPath的contains功能來查詢下面的XML文件的「description」元素。當使用「全新」進行查詢時(如下面的xpath表達式代碼所示),它將檢索XML數據。但是,如果使用「低價全新」,則不會檢索到任何內容。顯而易見的結論是,包含函數只會檢索完全匹配的文本字符串,並且如果單詞相互分離(如下面的描述元素),則不起作用。XPath - 查詢不完全匹配的文本字符串

XPath是否有一個函數或方法在查詢描述元素時使用字符串「低價格全新」來檢索以下XML數據?謝謝!將使用

/products/product[contains(description, "brand new") and contains(description, "low price")] 

當然,要做到這一點

$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> 
+1

不,不與XPath 1.0功能,但你當然可以使用2'contains()'查詢。另外,你可能想使用'normalize-whitespace()'。 – Wrikken

回答

0

的一種方式,這是非常具體的你的榜樣。

你可以通過分割你的字符串來概括一點。在XPath 1.0:

/產品/產品[含有(說明書中, 「品牌」)和含有(描述中, 「新」)和含有(說明書中, 「低」)和含有(描述中, 「價格」) ]

在XPath 2.0:

/產品/產品[含有(描述中,標記化( 「低價格嶄新」, 「\ S +」))]