2013-01-25 83 views
2

我使用XML DOM和PHP获取属性 - PHP

$troops = $xmlfile->getElementsByTagName("troops"); 

foreach($troops as $troop) { 

    $sniper = $troop->getElementsByTagName("sniper"); 
    $otroop[0] = $sniper->item(0)->nodeValue; 

    $riffle = $troop->getElementsByTagName("riffle"); 
    $otroop[1] = $riffle->item(0)->nodeValue; 

    $riffle = $troop->getElementsByTagName("shooter"); 
    $otroop[2] = $riffle->item(0)->nodeValue; 

    $riffle = $troop->getElementsByTagName("missle"); 
    $otroop[3] = $riffle->item(0)->nodeValue; 

    $tank = $troop->getElementsByTagName("tank"); 
    $otroop[4] = $tank->item(0)->nodeValue; 

    $bomber = $troop->getElementsByTagName("bomber"); 
    $otroop[5] = $bomber->item(0)->nodeValue; 

    $patrol = $troop->getElementsByTagName("patrol"); 
    $otroop[6] = $patrol->item(0)->nodeValue; 

    $surveillance = $troop->getElementsByTagName("surveillance"); 
    $otroop[7] = $surveillance->item(0)->nodeValue; 

} 

XML

<troops> 
    <sniper level="5">2</sniper> 
    <riffle level="0">0</riffle> 
    <shooter level="0">0</shooter> 
    <missle level="0">0</missle> 
    <tank level="0">0</tank> 
    <bomber level="0">0</bomber> 
    <patrol level="0">0</patrol> 
    <surveillance level="0">0</surveillance> 
</troops> 

我想能够拉每个节点的水平,以及建立一个脚本我曾试图

$oresearch[0] = $sniper->getAttribute("level"); 

但是,这并不工作,这里的任何建议将是有益的

回答

1

在您的代码$sniperDOMNodeList。您处理这个正确的,你得到的第一个节点的值:

$sniper->item(0)->nodeValue 

对于第一个节点的属性,你必须做类似:

$sniper->item(0)->getAttribute('level')