节点内的属性读取还有个快捷方法。通过 IXMLNode 的AttributeNodes 属性,能将该Node 的属性以节点的方式映射出来。 这样通过 NodeName 和NodeValue 属性就能读出每个属性的值。AttributeNodes.Count 说明了该节点包含的属性个数。如下面的代码片断。
// 获取指定的节点
XMLNode := GetNode( strNodePath, intRowIndex, dep );
Result := True;
// End 。
if not assigned( XMLNode ) then
begin
Result := False; // 无效的节点或者该节点不能包括单独的Text
exit;
end;
// 逐个获取该节点的属性和属性值
for i := 0 to XMLNode.AttributeNodes.Count - 1 do
begin
sltAttributeName.Add( XMLNode.AttributeNodes.Nodes.NodeName );
sltAttributeValue.Add( XMLNode.AttributeNodes.Nodes.NodeValue );
end;
// end .
另外对于一个有固定格式的文档, Delphi还提供了一种叫做数据绑定向导的方法来实现解析。 这样的优点是你根本就不要在取考虑什么节点子节点之类头疼的问题了,通过Delphi向导生成的XML文档接口,你可以像访问普通的对象一样来访问XML中的对象。 下面我们也来谈一下如何通过这种方法来实现解析。
1. 准备好你要解析的XML文档典型实例。这至关重要,因为Delphi需要这个文档来生成一个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:AppServwwwxml est.xml' ); // 这个方法也是由向导生成的。
memo1.Lines.Add(xml.Data.Row[1].name); // 比如我要取得data下的第2个row 中的name属性。
Memo1.Lines.Add( xml.Memo.Color ); // 访问Memo节点中的属性 color
Memo1.Lines.Add( xml.Memo.Text ); // 访问 Memo 节点中的属性 Text。
………………..
end;