Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
除了MSXML,还有更好的IDomi实现吗?_Xml_Delphi - Fatal编程技术网

除了MSXML,还有更好的IDomi实现吗?

除了MSXML,还有更好的IDomi实现吗?,xml,delphi,Xml,Delphi,Delphi中有3种IDomi实现: MSXML Xerces XML ADOMXMLV4 MSXML是默认的IDomi实现 我的测试是计算加载10MB xml文件所需的时间。我使用使用XML数据绑定从XSD生成的Delphi单元来加载XML文件。该装置有3个常见功能: function Getmenubar(Doc: IXMLDocument): IXMLMenubarType; function Loadmenubar(const FileName: WideString): IXMLMen

Delphi中有3种IDomi实现:

  • MSXML
  • Xerces XML
  • ADOMXMLV4
  • MSXML是默认的IDomi实现

    我的测试是计算加载10MB xml文件所需的时间。我使用使用XML数据绑定从XSD生成的Delphi单元来加载XML文件。该装置有3个常见功能:

    function Getmenubar(Doc: IXMLDocument): IXMLMenubarType;
    function Loadmenubar(const FileName: WideString): IXMLMenubarType;
    function Newmenubar: IXMLMenubarType;
    
    我从网上了解到,有人评论说,MSXML的开销很高,与其他XML解析器相比,它无法执行。然而,我的研究表明MSXML是最好的。Xerces XML第2版和ADOM XML第4版最差:

  • MSXML-0.6410秒
  • Xerces XML-2.4220秒
  • ADOM XML v4-67.50秒
  • 我还遇到了OmniXML,它声称与MSXML相比具有更好的性能,但我从未成功地将其用于XML数据绑定生成的单元


    是否有其他供应商实现了Delphi的IDomi实现,并且比MSXML工作得更好?我正在使用Delphi 2010和Windows 7。

    有一个名为NativeXML的工具(最近开始开源)

    有一种比MSXML更快且开源的。它是MSXML的同谋,因此切换非常容易。事件接口名称相同。然后,还有一个扩展OmniXML接口的方法,因此使用XML变得非常简单。查看有关SimpleStorage使用的演示和博客帖子。请记住,SimpleStorage中更复杂的操作会牺牲一点速度以便于使用和增强功能。

    您确定需要DOM解析器吗?SAX解析器更快。我对XML不太了解,但我知道计算,我知道这是一条一般规则:如果有Microsoft版本和替代品,至少有一种替代品会更好。为什么OmniXML不适合您?我在许多产品中使用它,并取得了巨大成功。是的,它比MSXML更重要。如果您在VCL source:msxmldom.pas中查看该单元,您将看到该单元在初始化部分注册DOM供应商。然后,我们可以设置DefaultDOMVendor(xmldom.pas中定义的变量)来指定解析XML流时要使用的DOM供应商。是的,当我通过XML数据绑定生成的对象访问XML流时,我需要使用DOM。你坚持使用MSXML吗?(或者找到其他替代方案?)