Delphi中的XML库和教程

时间:2008-11-04 20:57:05

标签: xml delphi

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

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

6 个答案:

答案 0 :(得分:17)

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

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

我建议你看一下作为MSXML2_TLB一部分的IXMLDOMDocument2,例如

  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;

从那里拿走。

答案 1 :(得分:11)

我使用simdesign中的nativeXML。它可以解决使用XML带来的所有困难,您将在几分钟内启动并运行。

答案 2 :(得分:9)

以下是一些教程:

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

答案 3 :(得分:8)

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

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

答案 4 :(得分:8)

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

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

您不必通过阅读和编写每个XML元素来努力工作 - 您只需处理对象集合及其属性。

答案 5 :(得分:4)

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