当前位置:  开发笔记 > 编程语言 > 正文

PHP的最佳XML解析器

如何解决《PHP的最佳XML解析器》经验,为你挑选了5个好方法。

我之前使用过XML Parser,虽然它工作正常,但我对它一般不满意,感觉就像我在使用基本功能的东西时使用变通方法.

我最近看过SimpleXML,但我还没有尝试过.它更简单吗?两者有哪些优点和缺点?你用过的其他任何解析器?



1> Robert K..:

我不得不说SimpleXML取得了成功,因为它首先是一个用C语言编写的扩展,并且非常快.但其次,解析后的文档采用PHP对象的形式.所以你可以像"查询"一样$root->myElement.


simplexml是最好的.但是使用命名空间并不是很好,有时它会变得棘手
使用SimpleXML处理命名空间XML很糟糕.
我认为不是最好的.它不支持xml version ="1.1"并抛出有关此事实的警告(我的PHP版本是5.3.6).我知道你可以禁用警告并且它工作正常,但我不认为这是一个很好的解决方案.那么想象一下,如果您的API提供商将xml文档版本从1.0更改为1.1,会发生什么?第二个想法是@Gordon所指出的.SimpleXML将整个文档加载到内存中.这是很好的解决方案,但肯定不是最好的.
是的我认为这也是最好的.我用它来使用xpath.$ xml-> xpath("// block"); //这是超级:)
当一个节点有一个子节点时,SimpleXML会创建不同的结构 这让我感到恶心!

2> Gordon..:

查看PHP的可用XML扩展,并参阅http://devzone.zend.com/243/和http://devzone.zend.com/1035/进行讨论.

XML Parser和SimpleXML之间的主要区别在于后者不是拉解析器.SimpleXML构建在DOM扩展之上,并将整个XML文件加载到内存中.像XMLReader这样的XML Parser只会将当前节点加载到内存中.您可以为特定节点定义处理程序,这些处理程序将在Parser遇到它时触发.这样更快,节省内存.你无法使用XPath支付费用.

就个人而言,我发现SimpleXml在DOM上提供的功能非常有限(因此很简单).你可以轻松地在DOM和SimpleXml之间切换,但我通常不会费心去直接使用DOM路由.DOM是W3C DOM API的一个实现,因此您可能熟悉其他语言,例如JavaScript.



3> NexusRex..:

当扩展名不可用时,这是一个非常有用的函数,用于快速简便的xml解析:

$value) {
                $php_stmt_att=$php_stmt.'[$x_tag]'.$add.'[$key] = $value;';
                eval($php_stmt_att);
            }
        }
    }
    return $xml_array;
}
?>



4> Vahan..:

嗨,我认为SimpleXml非常有用.有了它,我使用xpath ;

$xml = simplexml_load_file("som_xml.xml");

$blocks  = $xml->xpath('//block'); //gets all  tags
$blocks2 = $xml->xpath('//layout/block'); //gets all  which parent are     tags

我使用了很多xml配置,这有助于我快速解析它们. SimpleXml是写的,C所以它非常快.



5> dcousineau..:

这取决于您尝试使用XML文件执行的操作.如果您只是尝试读取XML文件(如配置文件),那么Wicked Flea在建议SimpleXML时是正确的,因为它创建的数量相当于嵌套的ArrayObjects.例如,$ xml-> root-> child可以访问value.

如果您希望操作XML文件,最好使用DOM XML

推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有