2010-07-26 60 views
2

我正在使用SimpleXMLElement和xpath嘗試從底部的xml讀取<subcategory><name>。此代碼工作..但while循環內的東西看起來有點凌亂,現在我也想得到<subcategory><count>,並以某種方式配對它適當的<subcategory><name>閱讀xml:可以xpath讀取2個字段?

$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> 
+0

什麼是「配對」? – 2010-07-28 03:27:35

回答

2

如果使用SimpleXML和你知道確切的佈局,它可能是更容易做到這一點:

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

在XPath,你可以ofcourse選擇subcategory所有子節點,但配對他們備份可能會更麻煩,然後只是最後一個節點的上述xpath。

+0

看起來這是我需要的,謝謝。 – stacker 2010-07-27 01:30:21