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()メソッドを呼び出して、ヘッドエンドのheadendId属性の文字列値をフェッチできます。

于 2013-03-14T01:15:05.993 に答える