使用PHP中的xpath过滤XML属性

时间:2014-03-23 11:03:15

标签: php xml xpath

这是我的XML文件:

<?xml version="1.0" encoding="utf-8"?>
<sets>
  <set name="default">
    <phpClass name="ArrayIterator" />
  </set>
  <set name="production" basedOn="default">
    <phpVersion>
      <min>5.3.0</min>
    </phpVersion>
  </set>
</sets>

我必须获取所有项目(设置)并从XML中分配默认(或其他)的phpClass,其中集合与basedOn相关联。有更多的主要集合(使用diffarent名称设置)和许多使用basedOn的集合。这必须是在更多的网站上动态,我不知道所有的名字和basedOn-s,所以它将是动态脚本。

这就是我现在拥有的PHP(用于测试):

$this->xml = simplexml_load_file($file);
print_r($this->xml->xpath("//sets/set[contains(name, 'default')]"));

但我明白了:Array ( )

有什么想法吗?也许我不太清楚,所以当你不明白的时候问问。

1 个答案:

答案 0 :(得分:3)

您正在尝试选择名称元素的集合,其中包含&#39;默认&#39;您需要使用@name来选择属性:

$this->xml = simplexml_load_file($file);
print_r($this->xml->xpath("//sets/set[contains(@name, 'default')]"));

作为旁注,似乎没有必要使用contains,当你有类似html类属性的地方,你有多个类时,通常使用set[@name='default'],这里你只需使用{{1}}代替