2010-07-26 3 views
2

SimpleXMLElement와 xpath를 사용하여 xml의 맨 아래에있는 <subcategory><name>을 읽으려고합니다. 이 코드는 작동하지만 .. while 루프 내부의 내용이 조금 엉망이되어, 지금은 <subcategory><count>을 얻고 어떤 식 으로든 해당하는 과 쌍을 이루기를 원합니다.reading xml : xpath가 2 개의 필드를 읽을 수 있습니까?

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

내 질문 :이 작업을 쉽게 만들 수있는 것 같습니다 이후 여전히 XPath를 사용하는 동안은 가능하면이 페어링을 얻는 방법? 당신이 당연히 subcategory의 모든 하위 노드를 선택할 수, XPath를 가진

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

하지만 페어링 :

<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

"페어링"이란 무엇입니까? –

답변

2

당신이 SimpleXML을을 사용하고 있고 정확한 레이아웃을 알고 있다면,이 작업을 수행하는 것이 더 쉬울 수 있습니다 그 (것)들 백업은 말썽 더 그 때 다만 마지막 노드를위한 xpath를 앞설 수 있었다.

+0

이게 내가 필요한 것 같아. 고마워. – stacker

관련 문제