CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  数据库相关

多个XML文件合并的问题?

楼主xiaokun111(网语飘飘)2006-03-14 14:17:21 在 Delphi / 数据库相关 提问

由于数据由客户端得出多个XML文件,  
  每个XML为一张表。  
  一个ClientDataSe对象只能处理一张表,若要进行多表查询比如说:  
  select   a,b,c   from   x,y,z   where   x.id=y.id   and   x.id=z.id  
  ClientDataSet   就无能为力,只有将所有表连起来,供ClientDataset操作,  
  怎样将XML文件合并啊?(所有操作都在客户端进行,与服务器是非连接)  
  问题点数:80、回复次数:5Top

1 楼lextm(LeLe)回复于 2006-03-15 12:52:42 得分 10

每个XML为一张表?  
  ------------------  
  这个就可以改成多个表。  
   
  如果这个不能改,那么合并的方法似乎在Help里面有。  
   
  Delphi   Developer's   Guide   to   XML里面也有相关说明。Top

2 楼xiaokun111(网语飘飘)回复于 2006-03-17 22:25:55 得分 0

大家说说啊Top

3 楼haizhu1983()回复于 2006-03-22 09:07:43 得分 10

把多个XML合并长一个,你就把其他XML文件内容加入到其中一个中间去不就可以了??Top

4 楼xiaokun111(网语飘飘)回复于 2006-03-27 21:45:38 得分 0

请版主为我结贴!Top

5 楼biao_227(飙)回复于 2006-03-28 10:24:10 得分 60

转载xml编程  
  通过一个读写XML文件的实例来说明XML编程的各个步骤,只需读者有结点、元素、属性的基本概念就能容易的理解本文。所要读入的XML文件结构如下所示,命名为Input.xml。  
  <?xml   version="1.0"   encoding="GB2312"?>  
  <学生花名册>  
  <学生   性别   =   "男">  
  <姓名>李华</姓名>    
  <年龄>14</年龄>  
  <电话>6287555</电话>  
  </学生>  
  <学生   性别   =   "男">  
  <姓名>张三</姓名>  
  <年龄>16</年龄>  
  <电话>8273425</电话>  
  </学生>  
  </学生花名册>  
  Input.xml文件的第一行是XML的版本说明,属性encoding宣告使用何种字符集建立,默认以Unicode   编码(UTF-8   或UTF-16),这里用中文GB2312码。第二行“<学生花名册>“是根元素。下面定义了两个学生元素,学生下面嵌套了三个子元素,是对学生的进一步说明。与之相对应的,我们在Delphi中定义如下的学生数据结构,"//"后面的文字是对变量或语句的说明,下同。  
  TStudent   =   class   {学生}  
  sex   :   string;   //学生性别  
  name   :   string;   //学生姓名  
  age   :   integer;   //学生年龄  
  phone:   string;   //电话号码  
  end;  
  为了读写,我们需要放置两个TXMLDocument控件,在Delphi   VCL面板的Internet标签页里那个标有XML字样的控件就是,当然此控件也可以动态创建,但需要包含必要的文件,这里为简单起见,我们直接放置在窗体上,分别命名为InXMLDoc和OutXMLDoc,InXMLDoc用于调入Input.xml文件,OutXMLDoc用于暂存输出到Output.xml的文档。  
  在窗体上放个按钮,我们把测试代码直接放置在按钮的单击事件里。先定义几个变量,用来保存临时信息,如下所示:  
  Root   :   IXMLNode;   //指向XML根结点  
  Parent_Node:   IXMLNode;   //指向学生结点  
  Child_node   :   IXMLNode;   //指向学生的子结点  
  Student   :   TStudent;   //存单个学生信息  
  List   :   TList;   //存学生列表  
  i   :   integer;   //循环变量  
  我们先来读入XML文件,代码如下:  
  List   :=   TList.Create;   //初始化列表  
  InXMLDoc.LoadFromFile('Input.xml');   //调入Input.xml文件  
  Root   :=   InXMLDoc.DocumentElement;   //取XML文件的根结点,即“<学生花名册>”  
  Parent_Node   :=   Root.ChildNodes.First;   //使Parent_Node指向学生结点  
  while   (Parent_Node   <>   nil)   do   //循环取多个学生,可再多加几个学生信息测试  
  begin  
  if   (Parent_Node.NodeName   =   '学生')   then   //判断是否为学生结点  
  begin  
  Student   :=   TStudent.Create;   //新建一个学生的结构信息  
  Student.sex   :=   Parent_Node.Attributes['性别'];   //取学生的性别属性    
  Child_Node   :=   Parent_Node.ChildNodes.First;  
  //使Child_Node指向该学生的第一个子结点信息  
  while   (Child_Node   <>   nil)   do   //循环取学生的各个子各点  
  begin  
  if   (Child_Node.NodeName   =   '姓名')   then   //判断是否为姓名结点  
  Student.name   :=   Child_Node.Text   //取姓名结点的值,取于name字段中  
  else   if   (Child_Node.NodeName   =   '年龄')   then   //此行起后四行与前两行类似  
  Student.age   :=   StrToInt(Child_Node.Text)  
  else   if   (Child_Node.NodeName   =   '电话')   then  
  Student.phone   :=   Child_Node.Text;    
  Child_Node   :=   Child_Node.NextSibling;   //顺序取下一个学生的子结点信息    
  end;  
  List.Add(Student);   //把一个学生信息加入列表  
  end;  
  Parent_Node   :=   Parent_Node.NextSibling;   //顺序取下一个学生信息    
  end;    
  到这儿,所有的学生信息都已存到List列表里面了,读者可以跟踪代码测试。  
  下面我们把List里的临时学生信息存到Output.xml文件里,代码如下:    
  OutXMLDoc.Active   :=   true;   //激活OutXMLDoc,自动初始化空的XML文档  
  OutXMLDoc.Encoding   :=   'GB2312';   //设置字符集  
  Root   :=   OutXMLDoc.AddChild('学生花名册');   //建根结点  
  for   i   :=   0   to   List.Count   -   1   do   //循环取各个学生信息  
  begin  
  Student   :=   List.Items[i];   //顺序取一个学生信息  
  if   (Student   <>   nil)   then  
  begin  
  Parent_Node   :=   Root.AddChild('学生');   //根结点后添加一个学生结点  
  Parent_Node.Attributes['性别']   :=   Student.sex;   //给学生结点设置性别属性    
  Child_Node   :=   Parent_Node.AddChild('姓名');   //学生结点后添加一个姓名结点  
  Child_Node.Text   :=   Student.name;   //设置姓名的文本值    
  Child_Node   :=   Parent_Node.AddChild('年龄');   //此行起后四行与前两行类似  
  Child_Node.Text   :=   IntToStr(Student.age);    
  Child_Node   :=   Parent_Node.AddChild('电话');  
  Child_Node.Text   :=   Student.phone;  
  end;  
  end;  
  OutXMLDoc.SaveToFile('Output.xml');   //把组织好的XML文档存于Output.xml文件中  
  OutXMLDoc.Active   :=   false;   //钝化(关闭)OutXMLDoc    
  List.Free;   //最后释放保存临时学生信息的列表  
  Top

相关问题

  • 请教:合并XML文件内容
  • 如何合并两个xml文件呀?
  • 文件合并
  • 怎么将两个xml文件合并在一个xml文件中?
  • XML问题--如何合并两个XML文件?
  • 怎样把多个obj文件合并成一个obj文件
  • 如何将多个.wav文件合并成一个.wav文件
  • 如何用XSLT技术将两个XML文件合并?
  • 如何合并XML和HTML文件?(紧急求助!!)
  • 100 分求 合并两个XML文件的例子

关键词

  • 结点
  • 学生
  • 文件
  • 属性
  • xml
  • 代码
  • 控件
  • 文档
  • outxmldoc
  • node

得分解答快速导航

  • 帖主:xiaokun111
  • lextm
  • haizhu1983
  • biao_227

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo