Delphi中的XML库和教程

Delphi中的XML库和教程,xml,delphi,Xml,Delphi,我计划将XML支持添加到应用程序中,但我不熟悉Delphi中的XML编程。 基本上,我需要基于XML节点创建对象,并基于对象生成XML文件 我应该使用哪个XML组件库?有关于Delphi的XML的好教程吗?您可以尝试以下书籍: 基本上,我建议您使用Microsoft的DOM。您需要像导入任何其他COM对象一样导入库。您可以使用Delphi(File-New-other-XML映射(我不知道确切的路径,没有Delphi我就在家里)) 它通过XML提供程序创建对象/接口,以便您可以使用对象/结构而

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


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

您可以尝试以下书籍:

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

您可以使用Delphi(File-New-other-XML映射(我不知道确切的路径,没有Delphi我就在家里))

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


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

以下是一些教程:


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

您可以从查看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;
函数XMLCreateRoot(var-xml:IXMLDOMDocument2;RootName:string;xsl:string='';编码:string='ISO-8859-1';语言:string='XPath'):IXMLDOMNode;
变量
NewPI:IXMLDOMProcessingInstruction;
开始
如果语言为“”,则
SetProperty('SelectionLanguage','XPath');
如果编码为“”,则开始
NewPI:=xml.createProcessingInstruction('xml','version=“1.0”encoding=“”+encoding+”);
appendChild(NewPI);
结束;
如果是xsl“”,则开始
NewPI:=xml.createProcessingInstruction('xml-stylesheet','type=“text/xsl”href=“”+xsl+”);
appendChild(NewPI)
结束;
xml.async:=false;
xml.documentElement:=xml.createElement(RootName);
结果:=xml.documentElement;
结束;

从那里开始。

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

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

使用微软的DOM有什么特别的原因吗?我觉得理解起来非常简单。SAX是另一个选项(不是我可以添加的唯一选项)。我必须检查nativelXML,听起来不错。这会产生一个xtr XML转换文件,您需要将其包含在exe中。它确实使XML成为一个更容易但不太灵活的数据集(它只适用于简单的XML)。参见stackoverflow NativeXML现在是开源的,并且支持Delphi到2010年。开源版本现在似乎支持Delphi XE。