Delphi XE 中的数据绑定(bind)向导生成继承自 Delphi 自己的 DOM 实现(ADOM XML v4)的类和接口(interface),它似乎不支持针对模式的验证 - “解析时验证”选项仅适用于MSXML 供应商类型——从 VCL 源代码以及 IDE 中 XMLDocument 组件的行为可以看出。所有验证支持似乎都基于 MSXML 实现,如果您需要模式验证,这会使向导变得无用。我在这里错过了什么吗?
有没有办法配置绑定(bind)向导(或一些底层实用程序)以生成基于支持验证的 MSXML 的类和接口(interface)?
或者 是否有调用/接口(interface)支持使用 Delphi 的 ADOM XML 实现进行模式验证,我还没有遇到过?
MNG
最佳答案
XML 数据绑定(bind)向导生成的代码取决于单位 XMLDoc和 XMLIntf (文档引用是 TXMLDocument 和 IXMLDocument)。
IXMLDocument
由 TXMLDocument
实现,它是 Delphi 支持的 XML DOM 的通用包装器。 TXmlDocument
使用的 DOM 取决于 DOMVendor property 的值.
如果在激活 TXMLDocument
实例时未指定 DOMVendor
(它不是因为 XML 数据绑定(bind)向导生成 DOM 中性代码),那么实际的 XML DOM使用取决于 XMLDOM unit 的这两个成员:
var
DefaultDOMVendor: string;
DOMVendors: TDOMVendorList;
在您的情况下,MSXML DOM 似乎是默认的 XML DOM,或者是唯一可用的 XML DOM。
所以你应该检查 DefaultDOMVendor 的值和 DOMVendors列表。
如果您可以使用上述值编辑您的问题,并且显示您如何观察到正在使用 MSXML DOM 的可重现案例,那肯定会有所帮助。
编辑:
您可以在加载 XML 根节点之前提前使用特定的 XML DOM 供应商,或者像这样创建一个新的 XML 根节点:
DefaultDOMVendor = 'MSXML';
关于xml - Delphi XE 中的数据绑定(bind)向导 - 可以将其配置为映射到 MSXML 接口(interface)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5775102/