2014-03-26 67 views
1

我已經創建了一個XML文件,該文件具有特許經營結構列表。問題是我想通過它的id來獲得一個特許經營權,而不必遍歷整個列表。PHP根據屬性獲取節點的簡單XML

這是我如何得到第一個特許經營的屬性。但我想要取回一個特權對象,其ID爲'3'。我會想到的是,ID是取勝的關鍵,但它不是,請看下圖:

SimpleXMLElement Object 
(
    [@attributes] => Array 
     (
      [id] => 1 
      [name] => Franchise 1 
      [aid] => 
     ) 

) 

這裏是我訪問第一個特許經營權的屬性,但是這不是對我很有幫助。

$this->xmlData->franchises->franchise->attributes() 

下面是XML

<?xml version="1.0" encoding="UTF-8"?> 
<data> 
    <franchises> 
     <franchise id="1" name="Franchise 1" > 
      <header> 
       <accountId>2354435435</accountId> 
      </header> 
      <used-list> 
       <accountId>2354435435</accountId> 
      </used-list> 
      <used-detail> 
       <accountId>2354435435</accountId> 
      </used-detail> 
      <contact-us> 
       <accountId>2354435435</accountId> 
      </contact-us> 
      <new-detail> 
       <accountId>2354435435</accountId> 
      </new-detail> 
      <left-column> 
       <accountId>2354435435</accountId> 
      </left-column> 
      <new-list> 
       <accountId>2354435435</accountId> 
      </new-list> 
      <offer-detail> 
       <accountId>2354435435</accountId> 
      </offer-detail> 
      <popup> 
       <accountId>2354435435</accountId> 
      </popup> 
     </franchise> 
     <franchise id="2" name="Franchise 2" > 
      <header> 
       <accountId>2354435435</accountId> 
      </header> 
      <used-list> 
       <accountId>2354435435</accountId> 
      </used-list> 
      <used-detail> 
       <accountId>2354435435</accountId> 
      </used-detail> 
      <contact-us> 
       <accountId>2354435435</accountId> 
      </contact-us> 
      <new-detail> 
       <accountId>2354435435</accountId> 
      </new-detail> 
      <left-column> 
       <accountId>2354435435</accountId> 
      </left-column> 
      <new-list> 
       <accountId>2354435435</accountId> 
      </new-list> 
      <offer-detail> 
       <accountId>2354435435</accountId> 
      </offer-detail> 
      <popup> 
       <accountId>2354435435</accountId> 
      </popup> 
     </franchise> 
    </franchises> 
</data> 

幫助將不勝感激的結構。

回答

2

看看xpath。您可以通過如下屬性檢索特定節點:

$result = $xml->xpath("//franchises/franchise[@id='2']"); 
+0

這是否涉及所有子元素?如果這樣會更糟糕 – SMKS

+1

是的,'$ result = $ xml-> xpath(「// franchises/franchise [@ id ='2']」); '返回一個SimpleXMLElement對象與查詢結果的所有子節點。 –