在PHP中获取单个XML元素的最快方法是什么?

在PHP中获取单个XML元素的最快方法是什么?,php,xml,parsing,indexing,Php,Xml,Parsing,Indexing,我想要一种索引(快速高效)的方法,让PHP跳到并获取单个XML元素。就像在SQL中,使用WHERE语句从索引列中获取一行一样 SimpleXML解析器下载整个XML文件,而XMLReader遍历整个文件,只是为了获得所需的单个元素。这些需要很多时间 那么,不经过第1-36项,直接跳到第37个的最快黑客(或解析器程序)是什么 我的偏好 如果我必须使用下面可选的num=“37”属性作为人工索引,那么我会,但我宁愿删除它,而是让程序神奇地计算出哪个是第37位 这是我的密码: XML 洛勒姆 乱数假文

我想要一种索引(快速高效)的方法,让PHP跳到并获取单个XML元素。就像在SQL中,使用
WHERE
语句从索引列中获取一行一样

SimpleXML解析器下载整个XML文件,而XMLReader遍历整个文件,只是为了获得所需的单个元素。这些需要很多时间

那么,不经过第1-36项,直接跳到第37个
的最快黑客(或解析器程序)是什么

我的偏好 如果我必须使用下面可选的
num=“37”
属性作为人工索引,那么我会,但我宁愿删除它,而是让程序神奇地计算出哪个
是第37位

这是我的密码:

XML

洛勒姆
乱数假文
多洛
.
.
.
等
PHP 您可以使用以高效的方式解析XML文档

爬虫 Symfony的组件具有API,可以用XPath和CSS解析HTML/XML文档。看看:

您可以使用以高效的方式解析XML文档

爬虫 Symfony的组件具有API,可以用XPath和CSS解析HTML/XML文档。看看:


然后看看如何使用XPath,我觉得XPath只适用于SimpleXML解析器。它可以与XMLReader一起工作吗?不,xpath可以与SimpleXML一起工作;如果您有内存来加载文件,那么这是访问第n个元素的最快方式当然,我的文件相当小(300行,1000行,如果您可以访问它们的孩子)。但是SimpleXML真的是最快的吗?因为,你看,我的100个左右的用户每3秒钟就会触发一个XML查询。每次都要重新下载整个XML文件似乎是不合理的。它可以与XMLReader一起工作吗?不,xpath可以与SimpleXML一起工作;如果您有内存来加载文件,那么这是访问第n个元素的最快方式当然,我的文件相当小(300行,1000行,如果您可以访问它们的孩子)。但是SimpleXML真的是最快的吗?因为,你看,我的100个左右的用户每3秒钟就会触发一个XML查询。每次都重新下载整个XML文件似乎不合理。嗯,很有趣。顺便说一句,作曲家链接拼写错误。(我自己无法修复,因为其他海报的所有编辑都必须至少有6个字符长。)啊,修复了。谢谢。亲爱的塞斐尔:谢谢你的建议,谢谢你对我的作品所做的所有编辑,但是我害怕下载像Composer这样庞大的东西,它应该为我管理事情,因此可以在我不知情的情况下接管我的系统。有没有更简单的方法来获得爬虫类?不客气@rudminda。是的,您可以在不使用composer的情况下安装DomCrawler组件。我更新了我的答案以反映这一点。而且。。。从某种意义上说,作曲家是伟大的,他带领了PHP世界向前发展。你看到的不是野兽。甚至像Laravel这样的现代框架也是围绕Composer及其软件包构建的。我强烈建议你们研究一下作曲家,改变你们的观点。它将改变你作为开发者的生活。嗯,很有趣。顺便说一句,作曲家链接拼写错误。(我自己无法修复,因为其他海报的所有编辑都必须至少有6个字符长。)啊,修复了。谢谢。亲爱的塞斐尔:谢谢你的建议,谢谢你对我的作品所做的所有编辑,但是我害怕下载像Composer这样庞大的东西,它应该为我管理事情,因此可以在我不知情的情况下接管我的系统。有没有更简单的方法来获得爬虫类?不客气@rudminda。是的,您可以在不使用composer的情况下安装DomCrawler组件。我更新了我的答案以反映这一点。而且。。。从某种意义上说,作曲家是伟大的,他带领了PHP世界向前发展。你看到的不是野兽。甚至像Laravel这样的现代框架也是围绕Composer及其软件包构建的。我强烈建议你们研究一下作曲家,改变你们的观点。它将改变你作为开发者的生活。
$xml = new XMLReader();
$xml->open("file.xml") or die("Error: Cannot create object");

while($xml->read()) {
    if ($xml->nodeType == XMLREADER::ELEMENT && $xml->localName == "item") {
            $xml->read();
            echo $xml->value;
    };
};
return;
composer require symfony/dom-crawler