要这个文档来生成一个xdt文档以及相应的对象接口。
2. 窗体中加入TXMLDocument 组件(在Internet页面上),并将其FileName置为要解析的XML文档实例。
3. 右击 TXMLDocument, 在弹出的菜单中选择 XML Data Binding Wizard…
4. 在弹出的向导中, 第一页中, 您可以看到Delphi已经帮您把XML文件中的各个节点对应到了接口,这里你可以展开每个节点,编辑每个节点的属性数据类型。单击Next到下一个配置页面,这里你可以看到Delphi生成了各个节点接口的框架代码。 单击 Finsh 完成向导, 这样Delphi将生成一个xdt 文件和与该XML文档结构对应的XML接口单元(默认是与实例文档同名)。
5. 将Delphi生成的这个接口单元use到您要调用该XML文档的单元中, 以根节点的接口做为入口,你就可以轻松的访问与该XML类似结构的XML文档了。
一下是个小的示范。
var xml :IXMLXMLPackageType; // 通过向导生成的根接口
begin
xml := LoadXMLPackage( ''D:\AppServ\www\xml\test.xml'' ); // 这个方法也是由向导生成的。
memo1.Lines.Add(xml.Data.Row.name); // 比如我要取得data下的第2个row 中的name属性。
Memo1.Lines.Add( xml.Memo.Color ); // 访问Memo节点中的属性 color
Memo1.Lines.Add( xml.Memo.Text ); // 访问 Memo 节点中的属性 Text。
………………..
end;
这种方法很简单吧, 不过它有一个局限性, 就是一个接口单元只能对应的解释一种整体结构一致的XML文档。 但对于一般的小型应用, 也可以考虑使用这个简洁的方法, 这使我们可以不必取关心这些讨厌的Node对象, 毕竟我们软件中用使用的每个XML文档都总是有个自己的原生结构的。
另外我还想提一下PHP中的XML解析,它使用的是SAX方式,每读到一个节点就调用相应的处理函数来完成解析。有兴趣的朋友可以到我网站上
下载一个未整理的
资料。
关于如何生成XML 文档, 有两种主要方法:
1.通过IXMLNode 对象的AddNode 或者 SetValue来动态的生成。
2.手工,以字符串的形式生成
我一般更愿意用第2种方法,这也有个小技巧, 你可以先准备好一个XML的框架,然和用字符串替代(format)的方法来填写里面的标记。
XML 封装类
出于XML的树型特性,理论上只要是能遍历的树的方法就能用于遍历XML文档,典型的就是递归和回溯算法了。