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

Php 读取xml:xpath可以读取2个字段吗?,php,xml,xpath,simplexml,Php,Xml,Xpath,Simplexml,我使用SimpleXMLElement和xpath尝试从最底层的xml中读取。这个代码有效。。但是while循环中的东西看起来有点乱,现在我还想得到并以某种方式将其与相应的配对 $names = $xml->xpath('/theroot/category/subcategories/subcategory/name/'); while(list( , $node) = each($names)) { echo $node; } 我的问题:在仍然使用xpath的情况下,是否可

我使用SimpleXMLElement和xpath尝试从最底层的xml中读取
。这个代码有效。。但是
while
循环中的东西看起来有点乱,现在我还想得到
并以某种方式将其与相应的
配对

$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.1
18
子类别1.2
29
第2类
子类别2.1
18
子类别2.2
29

如果您使用的是SimpleXML,并且您知道确切的布局,那么这样做可能更容易:

$subcategories = $xml->xpath('/theroot/category/subcategories/subcategory');
foreach($subcategories as $subcategory){
    echo $subcategory->name.'='.$subcategory->count;
}
使用XPath,您当然可以选择
子类别
的所有子节点,但是将它们备份可能比前面提到的最后一个节点的XPath更麻烦