我是PHP的新手(通常是编程),我正在开发一个项目,该项目应该从网站下载一个大的(大约85mb)XML文件,搜索一个字符串,然后编辑字符串位置的文本。似乎有很多方法可以使用PHP和其他语言进行搜索。有人可以推荐最有效或更进一步的阅读吗? - 谢谢。
编辑:我应该提到我要搜索的许多字符串都是非XML /纯文本。所以我不能依赖任何XML格式。这些XML工具对此仍然有用吗?或者我应该使用其他东西?像strpos()那样简单吗? (但我可以使用85mb文件作为大海捞针吗?)
答案 0 :(得分:0)
$file = "your.xml";
$doc = new DOMDocument();
$doc->load($file);
它支持XPath。
如果XML超过100-150 mb,建议将xml发送到本地应用程序,例如在C或Java上,proccecing,put in directory,以及在PHP中获取目录/文件名。
它比在PHP中处理大数据更快。
答案 1 :(得分:0)
您想要使用XmlReader
和XmlWriter
。它们是像xml处理器一样的SAX,不需要将整个文档加载到内存中。
API相当低级。 hakre/xmlreaderiterator package为流式xml转换提供了更高级别的API。以下代码将所有文本节点转换为大写,并将结果打印到stdout:
<?php
require 'vendor/autoload.php';
$reader = new XMLReader();
$reader->open('https://raw.githubusercontent.com/hakre/XMLReaderIterator/master/examples/data/movies.xml');
$writer = new XMLWriter();
$writer->openUri('php://output');
$writer->startDocument();
$iterator = new XMLWritingIteration($writer, $reader);
foreach ($iterator as $node) {
if ($node->nodeType === XMLReader::TEXT) {
// operate on text nodes
$writer->writeRaw(strtoupper($node->value));
} else {
// copy everything else as is
$iterator->write();
}
}