php - 如何使用 PHP 解析具有多个 xml 声明的 xml 文件? (几个 XML 文件的串联)

标签 php xml

xml格式:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE >
<root>
 <node>
  <element1></element1>
  <element2></element2>
  <element3></element2>
  <element4></element3>  
</node>
</root>

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE >
<root>
 <node>
  <element1></element1>
  <element2></element2>
  <element3></element2>
  <element4></element3>  
</node>
</root>

以及之后的几个 xml 声明。 顺便说一句,文件大小为 500MB。 我想寻求帮助如何在不使用 PHP 将其分解为不同文件的情况下解析该文件。

如有任何帮助,我们将不胜感激。 谢谢..

最佳答案

如果您不想拆分文件,则必须在内存中使用它。考虑到您的 500MB 文件大小,这可能会产生问题。无论如何,一种选择是从所有文档中删除 XML Prolog 和 DocType,然后像这样加载整个内容:

$dom = new DOMDocument;
$dom->loadXML(
    sprintf(
        '<?xml version="1.0" encoding="UTF-8"?>%s' .
        '<!DOCTYPE >%s' . 
        '<roots>%s</roots>',
        PHP_EOL, 
        PHP_EOL, 
        str_replace(
            array(
                '<?xml version="1.0" encoding="UTF-8"?>', 
                '<!DOCTYPE >'
            ),
            '',
            file_get_contents('/path/to/your/file.xml')
        )
    )
);

这将使它成为一个巨大的 XML 文件,只有一个 XML prolog 和一个 DocType(请注意,我假设 DocType 对于文件中的所有文档都是相同的)。然后,您可以通过遍历各个根元素来处理该文件。

关于php - 如何使用 PHP 解析具有多个 xml 声明的 xml 文件? (几个 XML 文件的串联),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10780560/

相关文章:

php - 创建时为 div 分配唯一 ID,然后使用 jquery 引用

python/elementtree xml解析成数组

java - 内部文本和子元素

python - 我如何在 Python 应用程序之上创建一个 GUI,以便它可以执行 GUI 或 CLI?

xml - XPath:选择具有同级子项条件的节点

php - 在 php 脚本中留下注释代码

javascript - 使用 ajax 请求将表单添加到现有页面

php 中的 Javascript 不工作

php - 如何在 mySQL 中以正确的方式使用 concat 来获取注册最多的工具的百分比

java - 删除少量节点的 XQuery