php xmlreader没有返回完整的数据

时间:2017-01-19 06:29:38

标签: php json xmlreader

您好我正在尝试从XML文件中获取所有数据,因此我使用了xmltoassoc函数。它适用于5 MB文件但不超过9mb文件。

这是我的代码: 我修改了这个函数来获取json代码,

function xml2assoc($xml, $name)
{
    $tree = null;
    while($xml->read()) 
    {
        if($xml->nodeType == XMLReader::END_ELEMENT)
        {
            return $tree;
        }        
        else if($xml->nodeType == XMLReader::ELEMENT)
        {
            $node = array();            
            if($xml->hasAttributes)
            {
                $attributes = array();
                while($xml->moveToNextAttribute()) 
                {
                    $attributes[$xml->name] = $xml->value;
                }
            }

            if(!$xml->isEmptyElement)
            {               
                $childs = xml2assoc($xml, $node['tag']);
                if(isset($childs['text']))
                {
                   $tree = $childs;
                } else {
                   $tree['text'] = $childs[0];
                }
            }
        }        
        else if($xml->nodeType == XMLReader::TEXT)
        {   
            if(isset($xmlArr['text']))
            {
               $tree = $xmlArr;
            } else {
               $tree['text'] = $xmlArr[0];
            }            
        }
    }
    return $tree; 
}

我已经使用此函数通过传递URL来返回JSON。

function PARSE_XML_JSON($url)
{
    $text = "";
    $xml = new XMLReader();
    $xml->open($url); 
    $assoc = xml2assoc($xml, "root"); 
    $xml->close();
    if(isset($assoc['text']))
    {
        $text = $assoc['text'];
    }
    //StoreInTxtFile($text);
    return $text;
}

我还试图通过这样做来保存文件中的数据:

function StoreInTxtFile($data)
{
    $myFile = 'jsonfile-'.time().'.txt';
    $fh = fopen($myFile, 'w') or die("can't open file");
    fwrite($fh, $data);
    fclose($fh);
}

请告诉我我错过了什么。 感谢

1 个答案:

答案 0 :(得分:1)

使用LIBXML_PARSEHUGE

        $xml = new XMLReader();
        $xml->open($url, NULL, LIBXML_PARSEHUGE);