2010-09-28 5 views
1

J'ai un fichier XML structuré comme celui-ciPHP Obtenir ID parent => la valeur de l'enfant sous forme de tableau de XML

<serieslist> 
    <series sid="123"> 
     <title type="main">Series 123 Main Title</title> 
     <title type="official">Series 123 Official Title</title> 
     <title type="short">S 123</title> 
    </series> 
    <series sid="456"> 
     <title type="main">Series 456 Main Title</title> 
     <title type="official">Series 456 Official Title</title> 
     <title type="short">S 456</title> 
    </series> 
    /* +6000 more <series> nodes */ 
</serieslist> 

je dois faire un tableau associatif qui se compose de la « sid » attributs et principale série titres comme celui-ci

array(
    123 => "Series 123 Main Title", 
    456 => "Series 456 Main Title", 
    //... 
); 

J'ai essayé d'utiliser cette requête XPath //series/title[@type="main"] et je reçois le nodelist

$xml = DOMDocument::load('serieslist.xml'); 
$xpath = new DOMXPath($xml); 
$titles = $xpath->query('//series/title[@type="main"]'); 
$series = array(); 
foreach($titles as $title) { 
    $series[] = $title->nodeValue; 
} 

Résultats dans

$series = array(
    0 => "Series 123 Main Title", 
    1 => "Series 456 Main Title", 
    //... 
); 

Mais j'ai besoin "de sid" des parents attribuent aussi. Comment pourrais-je faire cela d'une manière non-intensive en ressources?

Répondre

1

Assez simple. Il suffit de référencer les parent node à $title:

foreach($titles as $title) { 
    $id = $title->parentNode->getAttribute('sid'); 
    $series[$id] = $title->nodeValue; 
} 
+0

Je certainement étudier la documentation DOMDocument plus, merci beaucoup. –

Questions connexes