2016-08-02 64 views
0

我習慣於使用JSON,它看起來與DOM稍有不同。還有比這裏顯示的3個多很多:使用PHP輸出DOM

<item> 
    <ItemID> </ItemID> 
    <Title> </Title> 
</item> 
<item> 
    <ItemID> </ItemID> 
    <Title> </Title> 
</item> 
<item> 
    <ItemID> </ItemID> 
    <Title> </Title> 
</item> 

這是我嘗試使用代碼:

$response = curl_exec($connection); 
curl_close($connection); 

$dom = new DOMDocument(); 
$dom->loadXML($response); 

$items = $dom->getElementsByTagName("item"); 

foreach($items as $mydata) { 
    $id = $mydata->getElementsByTagName('ItemID'); 
    $title = $mydata->getElementsByTagName('Title'); 
echo $id; 
echo $title; 

} 

主要是想輸入這些值到數據庫中。所以像這樣:

$query .= "INSERT INTO `$table` "."(id, title) ......... 

我只是似乎無法拉出ID和標題的DOM。

+1

我不確定,但標籤名稱可能區分大小寫。因此,將'$ items = $ dom-> getElementsByTagName(「Item」);' 更改爲'$ items = $ dom-> getElementsByTagName(「item」);' –

+0

謝謝。我只是寫得很快,這是一個錯字。在我的實際代碼中沒有問題。 –

回答

0

第一個錯誤是忽略區分大小寫。標籤應該與提供的xml具有相同的情況。

第二個錯誤 - getElementsByTagName返回DOMNodeList,這是一個元素的集合。所以,你要麼迭代它,要麼使用item()方法。

$dom = new DOMDocument(); 
$dom->loadXML($response); 

$items = $dom->getElementsByTagName("item"); // not `Item` 

foreach ($items as $mydata) { 
    $id = $mydata->getElementsByTagName('ItemID'); // not `ItemId` 
    $title = $mydata->getElementsByTagName('Title'); 

    // get first element of each collection 
    echo $id->item(0)->nodeValue; 
    echo $title->item(0)->nodeValue; 
} 
+0

將信息保存到字符串中的最佳路線是什麼?所以說這個標題。我可以做$ id = $ mydata-> getElementsByTagName('item') - > item(0) - > nodeValue;這樣我就可以echo $ id; ?? –

0
$id = $mydata->getElementsByTagName('ItemID')->item(0)->nodeValue; 

添加 - >項(0) - >的nodeValue;在最後做了詭計!謝謝你幫我把它放在一起!

Brian