读取xml:xpath可以读取2个字段吗?

时间:2010-07-26 19:43:10

标签: php xml xpath simplexml

我正在使用SimpleXMLElement和xpath尝试从最底层的xml读取<subcategory><name>。这段代码可以运行..但是while循环中的内容看起来有点混乱,现在我也希望得到<subcategory><count>并以某种方式将其与适当的<subcategory><name>配对。

$names = $xml->xpath('/theroot/category/subcategories/subcategory/name/'); 
while(list( , $node) = each($names)) {
    echo $node; 
}

我的问题:是否可以在使用xpath的同时进行此配对,因为它看起来可以让工作更轻松?

<theroot>
<category>
  <name>Category 1</name>
  <subcategories>
      <subcategory>
          <name>Subcategory 1.1</name>
          <count>18</count>
      </subcategory>
      <subcategory>
          <name>Subcategory 1.2</name>
          <count>29</count>
      </subcategory>
  </subcategories>
</category>

<category>
  <name>Category 2</name>
  <subcategories>
      <subcategory>
          <name>Subcategory 2.1</name>
          <count>18</count>
      </subcategory>
      <subcategory>
          <name>Subcategory 2.2</name>
          <count>29</count>
      </subcategory>
  </subcategories>
</category>
</theroot>

1 个答案:

答案 0 :(得分:2)

如果您使用的是SimpleXML,并且知道确切的布局,则可能更容易实现:

$subcategories = $xml->xpath('/theroot/category/subcategories/subcategory');
foreach($subcategories as $subcategory){
    echo $subcategory->name.'='.$subcategory->count;
}

使用XPath,您可以选择subcategory的所有子节点,但是将它们重新配对可能比上一个节点的xpath更加麻烦。