供个人使用我目前正在编写一个递归的PHP函数,它应该处理大量相对较大的XML文件。因为我只需要2-3个节点的值,所以我搜索了一种方法,使其尽可能地节省内存和流量。所以我偶然发现了PHP Object XMLReader,它并没有像预期的那样工作,并且在PHP.net上没有真正记录。 我目前的代码如下:
<?php
$reader = new XMLReader();
$reader->open('http://path.to.xml/file', 'UTF-8');
$att1 = $reader->getAttribute('att1');
$att2 = $reader->getAttribute('att2');
$reader->close();
echo var_dump($att1) . ' ' . var_dump($att2);
?>
正如你所看到的那样,这是纯粹的调试,但它只是回显了两次NULL,根据文档,如果没有找到具有给定名称的属性[]被定位的情况就是这种情况在元素节点上。“
XML结构(实际文件大于500行,但有时也包含CDATA标记):
<parentnode>
<att1><![CDATA[ VAL1 ]]></att1>
<randomtags>randomval</randomtags>
<att2>VAL2</att2>
<foo>bar</foo>
</parentnode>
我几乎没有使用XML的经验,之前只使用过SimpleXML。我不想解析整个文件,只需要解析这两个值。
我已经尝试过:
欢迎任何提示或提示。 :)
答案 0 :(得分:2)
你正在使用
$att1 = $reader->getAttribute('att1');
但是在你的XML定义中,att1和att2是元素,而不是属性