【问题标题】:Loading 140 mb xml by using simplexml_load_file使用 simplexml_load_file 加载 140 mb xml
【发布时间】:2016-10-26 09:34:24
【问题描述】:

我正在尝试像这样使用simplexml_load_file() 解析大小为 140mb 的 XML

$sxe = simplexml_load_file("file.xml"); 
print_r($sxe);

它只返回对象

SimpleXMLElement Object
(
    [@attributes] => Array
        (
            [version] => 2.12
            [vocab-version] => 2015-09-08-01
        )

)

但是同样的代码在服务器上也能工作。我已经尝试了一切,增加内存限制,上传大小等,但没有取得任何成功。同样的代码也适用于一些小的 xml 文件。

【问题讨论】:

  • 您能否提供更多信息?例如我们应该调试的代码
  • 当然,我正在使用这个 $sxe = simplexml_load_file("file.xml"); print_r($sxe);
  • 不要在 cmets 中发布代码。改为编辑您的原始帖子。
  • 并且我认为它应该返回带有 xml 中所有属性的对象,但它只返回版本(如上所述)
  • 您可以将 XMLReader 与 SimpleXML 结合使用:stackoverflow.com/questions/24084203/… 这样只会将部分 XML 加载到内存中。

标签: php xml xml-parsing large-file-upload


【解决方案1】:
$simplexml = simplexml_load_file($file_path, 'SimpleXMLElement', LIBXML_PARSEHUGE|LIBXML_NSCLEAN);
//OR
$simplexml = new SimpleXMLElement($xml_string, LIBXML_PARSEHUGE|LIBXML_NSCLEAN);

你能像这个例子一样运行这段代码吗?

【讨论】:

  • 请尝试使用 LIBXML_PARSEHUGE|LIBXML_NSCLEAN 在 google 中搜索,您可以看到很多最大大小的文件解决方案,
  • $xsl->loadXML(file_get_contents('xml_path'), LIBXML_PARSEHUGE);我可以通过这个解析,但实际上我想要简单的 xml 元素的对象,你能帮我隐藏 dom 文档吗对象到简单的 xml
猜你喜欢
  • 2016-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多