我在使用默认的msxml实现多年后尝试使用OmniXML。 我有几个xml结构(其中一些非常庞大),我最初使用Delphi向导创建了一个绑定。然后手动编辑绑定以修复错误,而不是。
第一个问题:是否有一种(有点)简单的方法为OmniXML创建这样的绑定?我怀疑没有,但你永远不会知道......我开始手工编辑我的结构,试图使接口和类适合omniXML,但它是相当多(非常乏味)的工作
第二个问题:在一些演示和在线中,似乎“数据绑定”(想要更好的术语)是通过继承OmniXMLPorperties(TGpXMLxxxx)中定义的类来完成的。所以我开始玩弄它了。至少在我的情况下,以这种方式定义数据绑定是否有优势,而不是试图回收向导创建的数据绑定?
谢谢!
PS:如果重要,我正在使用Delphi XE2
答案 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名称。