2012-07-12 141 views
1

我有如下因素代碼:Xpath查詢包含

$xml = simplexml_load_file($url); 

$query = '/root/parent[Model="Corolla"]'; 

//RUN QUERY ON XML 
$xQuery = $xml->xpath($query); 

這裏是XML文件:

<root> 
    <parent> 
    <Model>Corolla A/C</Model> 
    </parent> 
</root> 

此代碼的工作好,如果我在尋找確切的字符串「花冠」。我遇到的問題是,其中一些值類似於「花冠A/C狀況良好」

有沒有一種方法可以查詢包含單詞花冠的任何模型元素的XML文件,而不是確切的字符串花冠?

編輯:我添加了一個我的XML幫助澄清的例子。

回答

3

在這種特殊情況下,我建議starts-with功能,而不是contains(如果假定所有模型打出「花冠」開頭):根據您的編輯

編輯

,你必須查詢更改爲:

/root/parent/Model[starts-with(., 'Corolla')] 

您也可以看看的Zvon XSLT Tutorial。這是一個非常好的閱讀。

+0

我剛剛編輯原始帖子,以顯示我的XML文件可能的樣子。當使用@Model時,它會與我展示的例子一起工作嗎?因爲如果我沒有弄錯,花冠是作爲一種價值而不是屬性輸入的。感謝您的幫助,我將爲本教程添加書籤。 – Marc 2012-07-12 19:24:28

1
/root/parent[contains(@Model, 'Corolla')] 

注意模型上的@ ......這是必要的,以表明你與parent標籤的屬性的工作,而不是其它標籤的名字恰好是Model