我使用xmlStreamer
来读取xml但无法读取整个xml。这个函数只返回两行?如何获取xml的全部数据?
<?php
class SimpleXmlStreamer extends XmlStreamer
{
public function processNode($xmlString, $elementName, $nodeIndex)
{
$xml = simplexml_load_string($xmlString);
$something = (string)$xml->Something->SomethingElse->ReadThis;
echo "$nodeIndex: Extracted string '$something' from parent node '$elementName'\n";
return true;
}
}
$streamer = new SimpleXmlStreamer("myLargeXmlFile.xml");
if ($streamer->parse()) {
echo "Finished successfully";
} else {
echo "Couldn't find root node";
}
?>
答案 0 :(得分:1)
解析远程XML时出现问题。您可能会收到此警告: “警告:filesize()[function.filesize]: 你的文件 .xml在 路径 \ XmlStreamer中失败第32行的.php“。如果是这种情况,您可以在XmlStreamer.php的第32行替换以下行:
$this->totalBytes = filesize($mixed);
这两行:
$head = array_change_key_case(get_headers($mixed, TRUE));
$this->totalBytes = $head['content-length'][1];
获取远程文件文件大小的解决方案来自:Warning : filesize function failing to operate
在此之后,根据文件大小,你可能会遇到memory_limit问题,但你可能会没事。
注意:我不确定为什么$head['content-length'][1]
必须乘以字节数。否则,不会解析整个文件。也许其他人可以解决这个问题。
答案 1 :(得分:0)
可能是因为你试图使用更多的内存,然后在PHP中定义。 尝试仅在此特定代码中扩展您的PHP内存使用。
但是首先在一个小的xml上尝试你的代码并检查你的代码是否真的有效。
答案 2 :(得分:0)
只有记忆问题。我使用XMLReader类来读取xml数据并轻松获取数据。