【发布时间】:2011-08-25 11:58:26
【问题描述】:
我正在尝试读取一个大的 xml 文件(大约 40 MB),并使用此数据更新我的应用程序的数据库。
似乎我在使用 XMLReader 和 simplexml_import_dom() 的经过时间/内存方面找到了一个很好的折衷方案,但我无法获取名称中带有冒号的属性的值...例如 <g:attr_name>。
如果我只是对每个“产品”节点使用 $reader->read() 函数,我可以将值检索为 $reader->value,但如果我 expand() 节点并使用 $doc->importNode 复制它此属性被忽略。
$reader = new XMLReader();
$reader->open(__XML_FILE__);
$doc = new DOMDocument;
while ($reader->read()) {
switch ($reader->nodeType) {
case (XMLREADER::ELEMENT):
if($reader->localName=="product"){
$node = simplexml_import_dom($doc->importNode($reader->expand(), true));
echo $node->attr_name."<br><br>";
$reader->next('product');
}
}
}
可能我错过了一些东西......任何建议都会非常受欢迎!
谢谢。
【问题讨论】:
-
你读过命名空间和simplexml吗? blogs.sitepoint.com/simplexml-and-namespaces
-
@I82Much:谢谢你的建议!
标签: php simplexml domdocument xmlreader