procedure TForm1.Button1Click(Sender: TObject); var noderef:IXMLDOMNodeRef; root:IXMLDOMNode; Node:IXMLDOMNode; begin XMLDocument1.Active:=true; noderef:=XMLDocument1.DocumentElement.DOMNode as IXMLDOMNodeRef; root:=noderef.GetXMLDOMNode; node:=root.selectSingleNode('node1/node2/node3/node4'); if Assigned(node) then begin ShowMessage(node.attributes.getnameditem('title').text); end; end; 转载其他的帖子
然后用个循环便利节点,加入到ListView中去
或者,使用delphi的XML Binding机制,用一个范例xml文档或者DTD/Schema,生成绑定单元,然后利用这个单元产生的接口,解析XML文档.
第二种方法映射了数据类型,操作方便一些
var
noderef:IXMLDOMNodeRef;
root:IXMLDOMNode;
Node:IXMLDOMNode;
begin
XMLDocument1.Active:=true;
noderef:=XMLDocument1.DocumentElement.DOMNode as IXMLDOMNodeRef;
root:=noderef.GetXMLDOMNode;
node:=root.selectSingleNode('node1/node2/node3/node4');
if Assigned(node) then
begin
ShowMessage(node.attributes.getnameditem('title').text);
end;
end;
转载其他的帖子
首页还有基础xml使用和xml绑定2篇教程,很有启发的
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, xmldom, XMLIntf, StdCtrls, msxmldom, XMLDoc,QComCtrls, ComCtrls;type
TForm1 = class(TForm)
Button1: TButton;
XMLDoc: TXMLDocument;
xmltree: TTreeView;
Button2: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
procedure ReadXMLTree(RootTreeNode:TTreeNode; XMLTreeNode:IXMLNode);
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
xn:IXMLNode;
f:TFileStream;
begin
//加载XML文档
XMLDoc.LoadFromFile('D:\xml\1.xml');
//使XML文档变为活动
XMLDoc.Active:=true;
xn:=xmldoc.Node;
ReadXMLTree(NIL,XN);end;//递归方法显示
procedure TForm1.ReadXMLTree(RootTreeNode:TTreeNode; XMLTreeNode:IXMLNode);
var
i:integer;
c:TTreeNode;
begin
for i:=0 to XMLTreeNode.ChildNodes.Count-1 do
begin
c:=xmltree.Items.AddChild(RootTreeNode,XMLTreeNode.ChildNodes.Nodes[i].NodeName);
ReadXMLTree(c,XMLTreeNode.ChildNodes.Nodes[i]);
end;
end;end;
或者用代码:
1.将xml文件中的数据读入到一个字符串rs中,然后
ClientDataSet1.xmlData:=rs;这样也能将数据转入Clientdataset,在然后你就可以遍历数据集,将纪录转入listview中。够麻烦吗?