Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 无法使用XmlStreamer读取大文件_Php_Xml - Fatal编程技术网

Php 无法使用XmlStreamer读取大文件

Php 无法使用XmlStreamer读取大文件,php,xml,Php,Xml,我使用xmlStreamer读取xml,但无法读取整个xml。这个函数只返回两行吗?如何获取xml的全部数据 <?php class SimpleXmlStreamer extends XmlStreamer { public function processNode($xmlString, $elementName, $nodeIndex) { $xml = simplexml_load_string($xmlString); $somet

我使用
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";
}
?>

这可能是因为您试图使用比php中定义的内存更多的内存。
尝试仅在此特定代码中扩展php内存使用


但是,首先在一个小xml上尝试您的代码,并检查您的代码是否实际工作。

只有内存问题。我已经使用XMLReader类读取xml数据并轻松获取数据

解析远程XML时出现问题。您可能会收到以下警告: “警告:filesize()[function.filesize]:第32行上路径\XmlStreamer.php中的您的文件.xml的stat失败。”。如果是这种情况,您可以在XmlStreamer.php的第32行替换以下行:

$this->totalBytes = filesize($mixed);
使用这两行代码:

$head = array_change_key_case(get_headers($mixed, TRUE));
$this->totalBytes = $head['content-length'][1]; 
获取远程文件大小的解决方案如下:

在此之后,根据文件大小,您可能会遇到内存限制问题,但您可能会没事


注意:我不确定为什么要将
$head['content-length'][1]
乘以字节。否则将不分析完整文件。也许其他人可以澄清这一点。

我也尝试过使用小xml,但在到达echo后仅获取一行成功完成。如果增加内存,我可以读取更多行。我已经增加到1GB,能够读取15行。请让我知道是否有任何增加内存大小的解决方案。