我对moveToAttribute
PHPXMLReader
类的方法有疑问。
我不想阅读 XML 文件的每一行。我希望能够遍历 XML 文件,而不是按顺序进行;也就是随机访问。我认为 usingmoveToAttribute
会将光标移动到具有指定属性值的节点,然后我可以在其中对其内部节点进行处理,但这并没有按计划进行。
这是 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()),然后处理其内部节点。
非常感谢。