2016-08-02 23 views
0

Ich bin es gewohnt, mit JSON und es scheint ein wenig anders als DOM. Es gibt viel mehr als die 3 hier gezeigt:Ausgabe DOM mit PHP

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

Dies ist der Code, den ich zu verwenden Ich versuche:

$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; 

} 

hauptsächlich diese Werte in einem DB eingeben möchten. So etwas wie:

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

Ich kann einfach nicht scheinen, die ID und Titel aus dem DOM zu ziehen.

+1

Ich bin mir nicht sicher, aber Tagnamen können Groß- und Kleinschreibung beachten. Also, ändern Sie $ items = $ dom-> getElementsByTagName ("Item"); ' zu' $ items = $ dom-> getElementsByTagName ("item"); ' –

+0

Vielen Dank. Ich habe das gerade schnell geschrieben und das war ein Tippfehler. kein Problem in meinem eigentlichen Code. –

Antwort

0

Erster Fehler ignoriert die Groß-/Kleinschreibung. Tags sollten die gleichen Fälle wie in der bereitgestellten XML-Datei haben.

Zweiter Fehler - getElementsByTagName gibt DOMNodeList zurück, die eine Sammlung von Elementen ist. Also, entweder iterieren Sie über oder verwenden Sie item() Methode.

$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

Was wäre der beste Weg, um die Informationen in einer Zeichenfolge zu speichern? Sagen Sie also diesen Titel. Kann ich $ id = $ mydata-> getElementsByTagName ('item') -> item (0) -> nodeValue; Auf diese Weise kann ich einfach $ id zurückgeben; ?? –

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

Zugabe der -> Artikel (0) -> nodeValue; Am Ende hat der Trick! Danke, dass ihr mir geholfen habt, es zusammen zu stellen!

Brian