我打算在应用程序中添加XML支持,但我不熟悉Delphi中的XML编程。 基本上我需要基于XML节点创建对象并基于对象生成XML文件。
我应该使用哪个XML组件库?有没有关于使用Delphi的XML的好教程?
答案 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的投票。