2010-09-28 66 views
1

我有结构性这样PHP获取父母的ID =>孩子的值作为数组从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> 

我需要做一个关联数组由“SID”属性和主要一系列的XML文件这样

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

标题我尝试使用此XPath查询//series/title[@type="main"]和我得到的节点列表

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

结果

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

但我需要父母的 “SID” 属性了。我怎么能用非资源密集型的方式做到这一点?

回答

1

很简单。刚才提到的parent node$title

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

我一定要学习DOM文档文档的详细,非常感谢。 – 2010-09-28 13:19:32