Delphi,OmniXML - XML绑定?

时间:2013-07-25 21:36:16

标签: delphi omnixml

我在使用默认的msxml实现多年后尝试使用OmniXML。 我有几个xml结构(其中一些非常庞大),我最初使用Delphi向导创建了一个绑定。然后手动编辑绑定以修复错误,而不是。

第一个问题:是否有一种(有点)简单的方法为OmniXML创建这样的绑定?我怀疑没有,但你永远不会知道......我开始手工编辑我的结构,试图使接口和类适合omniXML,但它是相当多(非常乏味)的工作

第二个问题:在一些演示和在线中,似乎“数据绑定”(想要更好的术语)是通过继承OmniXMLPorperties(TGpXMLxxxx)中定义的类来完成的。所以我开始玩弄它了。至少在我的情况下,以这种方式定义数据绑定是否有优势,而不是试图回收向导创建的数据绑定?

谢谢!

PS:如果重要,我正在使用Delphi XE2

1 个答案:

答案 0 :(得分:2)

Delphi的原生XML数据绑定与任何特定的XML DOM供应商实现无关。它基于TXMLDocument和相关接口,然后在内部访问特定于供应商的DOM接口。

在Windows上,MSXML是使用的默认DOM供应商。在Mac OSX上,ADOM / OpenXML是使用的默认DOM供应商。但您可以更改使用的DOM供应商。您只需将DOM供应商的名称分配给DefaultDOMVendor单元中的全局Xml.XmlDom.pas变量,并确保通过RegisterDOMVendor()注册了相应的DOM实现(对于MSXML)和ADOM / OpenXML一样,只需在uses子句中添加相应的DOM实现单元 - Xml.Win.msxmldom用于MSXML,Xml.adomxmldom用于ADOM / OpenXML - 因为它们在内部调用RegisterDOMVendor()

因此,在这种情况下,您可以简单地找到(或制作)OmniXML的DOM实现包装器,以便它可以插入TXMLDocument,然后将其注册到RegisterDOMVendor(),并设置DefaultDOMVendor变量到已注册的DOM名称。