【问题标题】:Delphi, OmniXML - XML binding?Delphi,OmniXML - XML 绑定?
【发布时间】:2013-07-25 21:36:15
【问题描述】:

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

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

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

谢谢!

PS:如果重要的话,我使用的是 Delphi XE2

【问题讨论】:

    标签: delphi omnixml


    【解决方案1】:

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

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

    因此,在这种情况下,您只需为 OmniXML 找到(或制作)一个 DOM 实现包装器,以便它可以插入 TXMLDocument,然后使用 RegisterDOMVendor() 注册它,并将 DefaultDOMVendor 变量设置为注册的 DOM名字。

    【讨论】:

    • 而且因为 OmniXML 与 MSXML 兼容,所以不会造成问题。
    • 不错,听起来比较简单!谢谢雷米,我试试看。
    • @Bourgui 请告诉我们您的尝试结果。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-16
    • 1970-01-01
    • 2012-04-10
    • 1970-01-01
    相关资源
    最近更新 更多