<?xml version="1.0" encoding="gb2312"?>
<XNHData>
<head>
<sendTime>2010-01-04 12:55:41</sendTime>
</head>
<businessData>
<dataSet size="2">
<data type="wf_retrieve_person">
<wf_retrieve_person -02>韩兴进</wf_retrieve_person-02>
</data>
<data type="wf_retrieve_person">
<wf_retrieve_person-02>杨冬云 </wf_retrieve_person-02>
</data>
……
</dataSet>
</businessData>
</XNHData>
如何读写这样的XML,我想读出来这两个人的数据哩?
<XNHData>
<head>
<sendTime>2010-01-04 12:55:41</sendTime>
</head>
<businessData>
<dataSet size="2">
<data type="wf_retrieve_person">
<wf_retrieve_person -02>韩兴进</wf_retrieve_person-02>
</data>
<data type="wf_retrieve_person">
<wf_retrieve_person-02>杨冬云 </wf_retrieve_person-02>
</data>
……
</dataSet>
</businessData>
</XNHData>
如何读写这样的XML,我想读出来这两个人的数据哩?
try
XMLDoc.FileName := filename;
XMLDoc.Active := True;
iNode:=XMLDoc.DocumentElement;
while iNode <> nil do
begin
ProcessNode(iNode,nil);
iNode := iNode.NextSibling;
end;
finally
XMLDoc.Active := False;
end;
var
XMLParser: TXMLDocument;
RootNode, //XNHData节点
HeadNode, //Head节点
sendTimeNode, //SendTime节点
BizDataNode, //businessData节点
DataSetNode, //DataSet节点
DataNode, //Data节点
PersonNode: IXMLNode; //wf_retrieve_person节点
SendTime: string;
TypeValue, person: string;
begin
XMLParser := TXMLDocument.Create(self);
try
XMLParser.LoadFromFile(FileName);
RootNode := XMLParser.DocumentElement.ChildNodes.First;
if RootNode <> nil then
begin
//获取Head节点上的数据
HeadNode := RootNode.ChildNodes.FindNode('head');
if HeadNode <> nil then
begin
sendTimeNode := HeadNode.ChildNodes.FindNode('sendTime');
if sendTimeNode <> nil then
SendTime := sendTimeNode.NodeValue; //获取SendTime数据
end; //获取businessData节点上的数据
BizDataNode := RootNode.ChildNodes.FindNode('businessData');
if BizDataNode <> nil then
begin
DataSetNode := BizDataNode.ChildNodes.First; //获得DataSet节点
if DataSetNode <> nil then
begin
DataNode := DataSetNode.ChildNodes.First; //获得第一个Data节点 while DataNode <> nil then
begin
if DataNode.HasAttribute('type') then
TypeValue := DataNode.Attributes['type']; //获取Type属性值 PersonNode := DataNode.ChildNodes.First; //获取Person节点
if PersonNode <> nil then person := PersonNode.NodeValue; DataNode := DataNode.NextSibling; //获取下一个Data节点
end;
end;
end;
end;
finally
XMLParser.Free;
end;
end;