moveToAttribute
PHP のXMLReader
クラスのメソッドに問題があります。
XML ファイルの各行を読み取りたくありません。XML ファイルを順番にたどらずにトラバースできるようにしたいと考えています。つまり、ランダム アクセスです。を使用moveToAttribute
すると、属性値を指定したノードにカーソルが移動し、そのノード内のノードを処理できると思ったのですが、うまくいきません。
xml ファイルのスニペットを次に示します。
<?xml version="1.0" encoding="Shift-JIS"?>
<CDs>
<Cat Type="Rock">
<CD>
<Name>Elvis Prestley</Name>
<Album>Elvis At Sun</Album>
</CD>
<CD>
<Name>Elvis Prestley</Name>
<Album>Best Of...</Album>
</CD>
</Cat>
<Cat Type="JazzBlues">
<CD>
<Name>B.B. King</Name>
<Album>Singin' The Blues</Album>
</CD>
<CD>
<Name>B.B. King</Name>
<Album>The Blues</Album>
</CD>
</Cat>
</CDs>
ここに私のPHPコードがあります:
<?php
$xml = new XMLReader();
$xml->open("MusicCatalog.xml") or die ("can't open file");
$xml->moveToAttribute("JazzBlues");
print $xml->nodeType . PHP_EOL; // 0
print $xml->readString() . PHP_EOL; // blank ("")
?>
moveToAttributeに関して、私は何を間違っていますか? ノードの属性を使用してノードにランダムにアクセスするにはどうすればよいですか? ノードCat Type="JazzBlues"を順次実行せずに (つまり、$xml->read()) ターゲットにして、その内部ノードを処理したいと考えています。
どうもありがとうございました。