2

我不明白为什么我不能引用 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>
4

2 回答 2

3

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

while ($reader->read())
{
        if ($reader->nodeType === XMLREADER::ELEMENT 
            && $reader->localName === 'headend')
        {
                echo $reader->getAttribute('headendId');
        }
}
于 2013-03-13T22:33:37.297 回答
2

它的工作原理与上次概述的相似:

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()方法来获取 headend headendId 属性的字符串值。

于 2013-03-14T01:15:05.993 回答