2017-08-03 126 views
0

我有一個PHP腳本使用xmlreader讀取一個xml文件,然後將數據傳遞給我的數據庫,這一切工作正常。儘管如此,我仍然爲圖像苦苦掙扎。我只能弄清楚如何獲得每個屬性的第一個圖像。這裏是XMLphp xmlreader獲取所有子節點

<properties> 
    <Property> 
    <propertyid>17229-122</propertyid> 
    <lastUpdateDate>2017-08-02</lastUpdateDate> 
    <category>Residential For Sale</category> 
    <images> 
     <image number="1"> 
     <image>domain.com/imagefile1212.jpg</image> 
     <alttext/> 
     </image> 
     <image number="2"> 
     <image>domain.com/imagefile12dfs2.jpg</image> 
     <alttext/> 
     </image> 
     <image number="3"> 
     <image>domain.com/imagefile1212.jpg</image> 
     <alttext/> 
     </image> 
    </images> 

我的PHP看起來像這樣

$theFeed = "locationofthexmlfile.xml"; 

$reader = new XMLReader(); 
$reader->open($theFeed); 


while($reader->read()) { 

    if ($reader->nodeType == XMLReader::ELEMENT && $reader->name == 'Property') { 
     $propCount++; 
     // Get children of property 
     $doc = new DOMDocument(); 
     $xml = simplexml_import_dom($doc->importNode($reader->expand(), true)); 
     #### get the data 


     $ref = $xml->propertyid; // this works fine 
     $img1 = $xml->images->image->image; /// this gets the first image 

     ?????? how to I get all the other images like $img2,$img3 etc 

     } 
} 

的示例中,我想我的問題是,如何我得到的圖像節點的所有子節點?但我只是不能工作我們的。或者我應該通過尋找atrribute number ='1'等來定位每個圖像。

任何幫助或指針將不勝感激

+0

您迭代屬性或使用SimpleXMLElement :: xpath(),就像直接將XML加載到SimpleXML中一樣。 * btw *'new DOMDocument()'應該在循環之外,並且可以將它作爲參數提供給'$ reader-> expand()' - 使得importNode()不必要。 – ThW

+0

謝謝TWH我現在就來看看 –

回答

0

我會建議使用「兒童()」,以獲得所有的節點。

例如:

$Img = $xml->Images->children(); 

$Img = $xml->Images->children()->children(); 

(取決於你的嵌套數組有多深)

之後,你可以很容易循環使用 「爲每個」 或分配每個變量的值由

$Img1 = $Img[0]; 
$Img2 = $Img[1]; 
$Img3 = $Img[2]; 

這是你在找什麼? :)