delphi 如何将XML格式的字符串导入ClientDataSet中
2008-05-29 15:27
711 查看
下面我写了一个公用函数:
uses XMLDoc, XMLIntf,msxml,msxmldom;
function XMLToDataSet(strXML:WideString):TClientDataSet;
var
myDataSet:TClientDataSet;
s:string;
xdoc : IXMLDOMDocument;
xdn :IXMLDOMNode;
xdns :IXMLDOMNodeList;
i,j:integer;
begin
s:='<?xml version="1.0" encoding="gb2312"?> <!--文档版本信息, 注释格式同HTML-->'
+'<data>'
+'<row>'
+'<id>11</id><name>AAA</name><sex>男9</sex><age>24</age>'
+'</row>'
+'<row>'
+'<id>12</id><name>BBB</name><sex>女8</sex><age>25</age>'
+'</row>'
+'<row>'
+'<id>13</id><name>CCC</name><sex>女7</sex><age>26</age>'
+'</row>'
+'<row>'
+'<id>4</id><name>DDD</name><sex>男6</sex><age>28</age>'
+'</row>'
+'</data>';
//上面的格式就是传递参数strXML:WideString的格式,必须用row节点
myDataSet := TClientDataSet.Create(nil);
xdoc:=CreateDOMDocument();
xdoc.loadXML(StrXML);
//xdoc.load('c:\test.xml');
s:='';
xdn:=xdoc.documentElement;
xdns:=xdoc.selectNodes('//row');
try
begin
for i:=0 to xdns.item[0].childNodes.length-1 do
begin
myDataSet.FieldDefs.Add(xdns.item[0].childNodes[i].nodeName,ftstring,1000);
end;
myDataSet.CreateDataSet; //建立
myDataSet.Active;
for i:=0 to xdns.length-1 do
begin
myDataSet.Append;
for j:=0 to xdns.item[i].childNodes.length-1 do
begin
myDataSet.FieldValues[xdns.item[i].childNodes[j].nodeName]:=xdns.item[i].childNodes[j].text;
end;
myDataSet.Post;
end;
end;
except
on Ex:Exception do
//ShowMessage(Ex.Message);
myDataSet:=nil;
end;
result:=myDataSet;
end;
uses XMLDoc, XMLIntf,msxml,msxmldom;
function XMLToDataSet(strXML:WideString):TClientDataSet;
var
myDataSet:TClientDataSet;
s:string;
xdoc : IXMLDOMDocument;
xdn :IXMLDOMNode;
xdns :IXMLDOMNodeList;
i,j:integer;
begin
s:='<?xml version="1.0" encoding="gb2312"?> <!--文档版本信息, 注释格式同HTML-->'
+'<data>'
+'<row>'
+'<id>11</id><name>AAA</name><sex>男9</sex><age>24</age>'
+'</row>'
+'<row>'
+'<id>12</id><name>BBB</name><sex>女8</sex><age>25</age>'
+'</row>'
+'<row>'
+'<id>13</id><name>CCC</name><sex>女7</sex><age>26</age>'
+'</row>'
+'<row>'
+'<id>4</id><name>DDD</name><sex>男6</sex><age>28</age>'
+'</row>'
+'</data>';
//上面的格式就是传递参数strXML:WideString的格式,必须用row节点
myDataSet := TClientDataSet.Create(nil);
xdoc:=CreateDOMDocument();
xdoc.loadXML(StrXML);
//xdoc.load('c:\test.xml');
s:='';
xdn:=xdoc.documentElement;
xdns:=xdoc.selectNodes('//row');
try
begin
for i:=0 to xdns.item[0].childNodes.length-1 do
begin
myDataSet.FieldDefs.Add(xdns.item[0].childNodes[i].nodeName,ftstring,1000);
end;
myDataSet.CreateDataSet; //建立
myDataSet.Active;
for i:=0 to xdns.length-1 do
begin
myDataSet.Append;
for j:=0 to xdns.item[i].childNodes.length-1 do
begin
myDataSet.FieldValues[xdns.item[i].childNodes[j].nodeName]:=xdns.item[i].childNodes[j].text;
end;
myDataSet.Post;
end;
end;
except
on Ex:Exception do
//ShowMessage(Ex.Message);
myDataSet:=nil;
end;
result:=myDataSet;
end;
相关文章推荐
- Delphi中ADODataSet如何循环输出每一条记录
- 如何把利用DataSet的GetXml()方法获得的字符串再转成DataSet对象
- 如何将字符串变量读入XML,再读到DATASET?
- 如何将dataset导入到excel表中的多个sheet中
- 重温delphi之:如何将Bitmap位图与base64字符串相互转换
- delphi Clientdataset
- delphi 中如何调用webservice返回dataset 数据集
- 如何在eoLinker上用导入JSON字符串的方式录入信息
- 如何从XML字符串获取DataSet
- VC调用Delphi制作的动态链接库如何互相传递字符串
- 如何解析xml格式的字符串的案例
- delphi中如何统计多行文本文件中相同字符串出现的次数
- 如何将xml格式的字符串结合xsl文件转换为html 格式字符串输出
- 如何将dataSet中的数据导入到Excel文件(*.xls)整理
- delphi clientdataset 用法2
- delphi clientdataset 加一行 的问题;只读字段的修改可写的问题
- 如何将Bitmap位图与base64字符串相互转换[delphi]
- Delphi 如何计算字符串表达式呢?
- Delphi 多层数据库无状态模式下 ClientDataSet 分段读取服务器端记录的方法
- Delphi ClientDataSet 主从结构 BUG