【问题标题】:Libraries and tutorials for XML in DelphiDelphi 中的 XML 库和教程
【发布时间】:2008-11-04 20:57:04
【问题描述】:

我打算为应用程序添加 XML 支持,但我不熟悉 Delphi 中的 XML 编程。 基本上我需要基于 XML 节点创建对象,并基于对象生成 XML 文件。

我应该使用哪个 XML 组件库? Delphi 有什么好的 XML 教程吗?

【问题讨论】:

标签: xml delphi


【解决方案1】:

您可以从查看 Delphi 的 TXMLDocument 组件开始。这将为您提供使用 XML/DOM 的基础知识。它很简单,可以通过将其拖放到您的表单中来添加。它具有 LoadFromFile 和 SaveToFile 方法,易于导航。

但是,在某些时候,您会耗尽 TXMLDocument 的功能,尤其是如果您想使用 XPath 之类的东西。

我建议您查看 IXMLDOMDocument2,它是 MSXML2_TLB 的一部分,例如

  XML := CreateOleObject('MSXML2.DOMDocument.3.0') as IXMLDOMDocument2;
  XML.async := false;
  XML.SetProperty('SelectionLanguage','XPath');

您需要将 msxmldom、xmldom、XMLIntf、XMLDoc 和 MSXML2_TLB 添加到您的使用部分。

那里有一些组件库,但我建议编写自己的帮助类或函数。这是我们编写和使用的示例:

function XMLCreateRoot(var xml: IXMLDOMDocument2; RootName: string; xsl: string = ''; encoding: string = 'ISO-8859-1'; language: string = 'XPath'): IXMLDOMNode;
var
  NewPI:   IXMLDOMProcessingInstruction;
begin

  if language<>'' then
     xml.SetProperty('SelectionLanguage','XPath');

  if encoding<>'' then begin
     NewPI:=xml.createProcessingInstruction('xml', 'version="1.0" encoding="'+encoding+'"');
     xml.appendChild(NewPI);
  end;

  if xsl<>'' then begin
     NewPI:=xml.createProcessingInstruction('xml-stylesheet','type="text/xsl" href="'+xsl+'"');
     xml.appendChild(NewPI)
  end;

  xml.async := false;
  xml.documentElement:=xml.createElement(RootName);
  Result:=xml.documentElement;
end;

从那里拿走。

【讨论】:

    【解决方案2】:

    我使用来自 simdesign 的nativeXML。它消除了使用 XML 的所有痛苦,您将在几分钟内启动并运行。

    【讨论】:

    • NativeXML 现已开源,并支持 Delphi 到 2010 年
    • 现在看来开源版本支持Delphi XE了。
    【解决方案3】:

    这里有几个教程:

    此外,您可能想查看XMLIntf unit(尽管此链接的 Delphi Wikia 页面内容非常简单)。

    【讨论】:

      【解决方案4】:

      您可以尝试以下书籍: Delphi Developers Guide to XML

      基本上我会推荐你​​使用微软的 DOM。您需要像导入任何其他 COM 对象一样导入该库。

      【讨论】:

      • 使用微软的 DOM 有什么特别的原因吗?
      • 我觉得它很容易理解。 SAX 是另一个选项(不是我可以添加的唯一其他选项)。
      【解决方案5】:

      您可以使用Delphi的XML Data Binding(文件-新建-其他-XML映射(我不知道确切的路径,我在家没有Delphi)。

      它通过 XML 提供程序创建对象/接口,因此您可以使用对象/结构而不是纯 xml 文本文件。

      您不必费力地阅读和编写每个 XML 元素 - 您只是在处理对象及其属性的集合。

      【讨论】:

      • 这会生成一个 xtr XML 转换文件,您需要将其包含在您的 exe 中。它确实使 XML 成为更简单但不太灵活的数据集(它只适用于简单的 XML)
      【解决方案6】:

      我已经使用 nativeXML 大约一年了。我的需求相当简单。对我来说,XML 流畅性只是大型应用程序的一小部分,但我能够以几乎与编写代码一样快的速度实现我需要的部分,在线帮助很好,我的需求在一天而不是一周内得到了满足或更长。我赞同 davehay 对 nativeXML 的投票。

      【讨论】:

      • 我得检查一下 nativelXML,听起来不错。有什么缺点吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多