2010-12-02 8 views
0

Je suis en train de faire toutes les catégories et les pousser dans mon array, jusqu'à présent, je le fais de cette façon:rss parsing DOMDocument en PHP

$doc = new DOMDocument(); 
    $doc->load('myxml.xml'); 
    $arr = array(); 
    foreach ($doc->getElementsByTagName('item') as $node) { 
    $items = array ( 
     'title' => $node->getElementsByTagName('title')->item(0)->nodeValue, 
     'date' => $node->getElementsByTagName('category')->item(0)->nodeValue 
    ); 
    $arr [] = $items ; 
    } 

Cela fonctionne si nous avons seulement 1 chat, mais , mon xml a plusieurs catégories par article. Quel serait un bon moyen de le faire?

<item> 
    <title>Submit</title> 
    <category>Foo</category> 
    <category>Bar</category> 
</item> 

Merci

+0

Merci à tous! – JoshReitch

Répondre

3

Cela devrait aider:

$doc = new DOMDocument(); 
$doc->load('myxml.xml'); 
$arr = array(); 
foreach ($doc->getElementsByTagName('item') as $node) { 
    $item = array ( 
     'title' => $node->getElementsByTagName('title')->item(0)->nodeValue, 
     'date' => array() 
    ); 

    foreach($node->getElementsByTagName('category') as $catNode) 
    { 
     $item['date'][] = $catNode->nodeValue; 
    } 

    $arr[] = $item; 
} 
  • Christian
0

Vous devez boucles imbriquées:

$doc = new DOMDocument(); 
$doc->load('myxml.xml'); 
$arr = array(); 

foreach ($doc->getElementsByTagName('item') as $itemNode) { 
    $items = array( 
     'title' => $itemNode->getElementsByTagName('title')->item(0)->nodeValue, 
     'date' => array() 
    ); 

    foreach ($itemNode->getElementsByTagName('category') as $categoryNode) { 
     $items['date'][] = $categoryNode->nodeValue; 
    } 

    $arr[] = $items; 
} 
+0

Mais cela ferait-il partie de arr []? J'essaie de les pousser dans mon arr [] – JoshReitch

+0

@JoshReitch: Mon code mis à jour gère cela en détail. – jwueller