使用XMLReader和PHP获取XML属性

时间:2013-03-13 22:25:32

标签: php xml xmlreader

我不明白为什么我不能引用XML属性'headendId'。我在这上面引用了几篇帖子,我的语法似乎没问题?谁能解释我做错了什么?提前谢谢。

<?php
$reader = new XMLReader();
$reader->open('file.xml');

while($reader->read())
{
    if($reader->nodeType == XMLREADER::ELEMENT && $reader->localName == 'headend')
{   
//$reader->read();
$headend = (string)$reader->getAttribute('headendId');
echo $headend;
}
} 

(xml是)

<lineup>
 <headend headendId="something">
  <name>some name</name>
  <ids>ids</ids>
  <codes>codes</codes>
 </headend>
</lineup>

2 个答案:

答案 0 :(得分:3)

找到它后,不要使用->read()前进到下一个节点(属性不是节点):

while ($reader->read())
{
        if ($reader->nodeType === XMLREADER::ELEMENT 
            && $reader->localName === 'headend')
        {
                echo $reader->getAttribute('headendId');
        }
}

答案 1 :(得分:2)

它与概述last time类似:

require('xmlreader-iterators.php'); // https://gist.github.com/hakre/5147685

$elements = new XMLElementIterator($reader, 'headend');
foreach ($elements as $element) {
    echo $element->getAttribute('headendId'), "\n";
}

XMLElementIterator只允许迭代特定元素,在这里您需要headend个元素。

然后在每个元素上,您可以调用getAttribute()方法来获取头端headendId属性的字符串值。