代码之家  ›  专栏  ›  技术社区  ›  Harriv

Delphi中的XML库和教程

  •  21
  • Harriv  · 技术社区  · 16 年前

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

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

    6 回复  |  直到 13 年前
        1
  •  19
  •   user34411 user34411    16 年前

    您可以从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
  •  11
  •   Geoff    12 年前

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

        3
  •  10
  •   Mattias Andersson cherba    14 年前

    以下是一些教程:

    此外,您可能想了解 XMLIntf unit (尽管这个链接的Delphi Wikia页面内容很轻)。

        4
  •  8
  •   Steve    16 年前

    你可以试试下面的书: Delphi Developers Guide to XML

    基本上,我建议你使用微软的DOM。您需要像导入任何其他COM对象一样导入库。

        5
  •  8
  •   DiGi    16 年前

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

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

    您不必通过读取和写入每个XML元素来进行艰苦的工作,您只需要处理对象的集合及其属性。

        6
  •  4
  •   jrodenhi    16 年前

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