2012-07-12 110 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