文档章节

delphi创建和读取xml(xml简单操作举例)

vga
 vga
发布于 2016/11/11 06:33
字数 265
阅读 182
收藏 0

有关许多接口,会需要通过xml进行数据交换,弄个例子,方便参考

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,XMLDoc,XMLIntf, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
Xml: TXMLDocument;
Rootnode,node : IXMLNode;
begin
Xml := TXMLDocument.Create(nil);
// Xml.LoadFromFile('aaa.xml');
try
//加入版本信息 ‘<?xml version="1.0" encoding="GB2312" ?> ’
Xml.Active := True;
Xml.Version := '1.0';
Xml.Encoding :='GB2312';

Rootnode := Xml.CreateNode('CIF_INFO');
Xml.DocumentElement := Rootnode;
node := Xml.CreateNode('TXNCODE');
Rootnode.ChildNodes.Add(node);
node.Text := '420001';
node := Xml.CreateNode('RESPCODE');
Rootnode.ChildNodes.Add(node);
node.Text := '0000';
node := Xml.CreateNode('CIFID');
Rootnode.ChildNodes.Add(node);
node.Text := '0030209728';
node := Xml.CreateNode('RESCODE');
Rootnode.ChildNodes.Add(node);
node.Text := '0000';
node := Xml.CreateNode('RESMSG');
Rootnode.ChildNodes.Add(node);
node.Text := '';

Xml.SaveToFile('aaa.xml');
xml.Active := False;
showmessage('创建成功!');
finally
Xml.Free;
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
Xml: TXMLDocument;
Rootnode,node : IXMLNode;
nodelist:IXMLNodeList;
b,c,str :string;
i:Integer;
begin
Xml := TXMLDocument.Create(Application);


try
Xml.LoadFromFile('aaa.xml');
Xml.Active := True;

Rootnode := Xml.DocumentElement;
nodeList :=Rootnode.ChildNodes;
 for i:=0 to nodelist.Count-1 do
    begin
      if  Rootnode.ChildNodes[i].NodeValue = null then
         begin
           c:='空';
         end
         else
         begin
           c:= Rootnode.ChildNodes[i].NodeValue;
         end;
      str:=str+c+#13#10;
    end;
//b := Rootnode.ChildNodes[ 'CIFID'].NodeValue;
Memo1.Lines.Add(str);
xml.Active := False;
finally
Xml.Free;
end;
end;
end.

本文转载自:http://www.th7.cn/Program/delphi/2011/10/27/45118.shtml

vga

vga

粉丝 22
博文 364
码字总数 26421
作品 0
佳木斯
私信 提问
加载中

评论(3)

vga
vga
//创建 xml 文件的标准方法
procedure TForm1.Button2Click(Sender: TObject);
var
pNode,cNode: IXMLNode; {定义两个节点: 父节点、子节点}
begin
XMLDocument1.XML.Clear;
XMLDocument1.Active := True; {必须先激活}
XMLDocument1.Version := '1.0'; {设置版本}
XMLDocument1.Encoding := 'GB2312'; {设置语言}

pNode := XMLDocument1.AddChild('科室名单'); {添加的第一个节点是根节点, 现在的 pNode 是根节点}
pNode.SetAttribute('备注', '测试'); {为根节点设置属性}

pNode := pNode.AddChild('人员'); {为根节点添加子节点, 现在的 pNode 是 "人员" 节点}
pNode.SetAttribute('职务', '科长'); {设置属性}
pNode.SetAttribute('备注', '正局级');

cNode := pNode.AddChild('姓名'); {为 pNode 添加子节点, 返回值 cNode 指向了新添加的节点}
cNode.Text := '张三';

cNode := pNode.AddChild('性别');
cNode.Text := '男';

cNode := pNode.AddChild('年龄');
cNode.Text := '34';

{查看}
ShowMessage(XMLDocument1.XML.Text);

{保存}
XMLDocument1.SaveToFile('c:\temp\2.xml');
end;
vga
vga
//利用 XML 属性创建 xml 文件
procedure TForm1.Button1Click(Sender: TObject);
begin
XMLDocument1.XML.Clear;
XMLDocument1.XML.Add('');
XMLDocument1.XML.Add('<科室名单 备注="测试">');
XMLDocument1.XML.Add('<人员 职务="科长" 备注="正局级">');
XMLDocument1.XML.Add('<姓名>张三');
XMLDocument1.XML.Add('<性别>男');
XMLDocument1.XML.Add('<年龄>34');
XMLDocument1.XML.Add('');
XMLDocument1.XML.Add('');

{查看}
ShowMessage(XMLDocument1.XML.Text);

{保存}
XMLDocument1.Active := True;
XMLDocument1.SaveToFile('c:\temp\1.xml');
end;
vga
vga
procedure TfrmMain.btn1Click(Sender: TObject);
var
TextXML:IXMLDocument;
XmlRoot:IXMLNode;
NodePos:IXMLNode;
b:string;
x,y:double;
LocateInfo:TLocateInfo;
begin
TextXML:=TXMLDocument.Create(nil);
TextXML.LoadFromFile('c: esponse.xml');
XmlRoot:= TextXML.DocumentElement;
NodePos:=XmlRoot.ChildNodes['slia'].ChildNodes['pos'];
LocateInfo.Mobile:=NodePos.ChildNodes['msid'].NodeValue;
LocateInfo.X := NodePos.ChildNodes['pd'].ChildNodes['shape'].ChildNodes['Point'].ChildNodes['coord'].ChildNodes['X'].NodeValue;
LocateInfo.Y := NodePos.ChildNodes['pd'].ChildNodes['shape'].ChildNodes['Point'].ChildNodes['coord'].ChildNodes['Y'].NodeValue;
showmessage(b);
end;
记录一个人事管理信息系统的开发过程1

项目初期-愉快的沟通、确定路线、统一思想 朋友F接到一个项目,开发一个地级市的人事管理信息系统。分布式的终端用户约100个,人员数据量约4万条,5年内数据增长后不会超过10万条。我们组建了...

夏春涛
2008/07/01
0
0
java将blob数据写入到xml中,Delphi TClientDataSet 读取blob失败

我用java把mysql数据写入到xml中,delphi TClientDataSet读取xml展示数据,数值、文本类型都能正常显示;blob类型异常 这里的原因应该是java将blob数据写入到xml中,delphi不认,请大神指点,...

liutao7514
2014/10/13
190
0
abel533/EasyXls

#EasyXls 使用EasyXls可以使你很方便的操作Excel。本项目目的是解决简单的(不带任何样式)xls文件的导入导出。 ##EasyXls特点 支持xls转换为对象 支持xls转换为对象 支持转换为xls 支持转换...

abel533
2014/09/12
0
0
【Python】XML文件解析之SAX(Simple API for XML)

常见的XML编程接口有DOM和SAX,这两种接口处理XML文件的方式不同,当然使用场合也不同。 DOM和SAX的区别 DOM(Document Object Model):将XML数据在内存中解析成一个树,通过对树的操作来操作...

恋恋美食
2012/05/25
0
0
快捷方便的Excel导入导出工具 Easy-Xls 1.0 版本发布

EasyXls 使用EasyXls可以使你很方便的操作Excel。本项目目的是解决简单的(不带任何样式)xls文件的导入导出。 处理XML时由于使用了JAXB,所以需要使用jdk1.6u14以上版本。 JAXB处理中文xml...

Liuzh_533
2014/10/09
7.2K
21

没有更多内容

加载失败,请刷新页面

加载更多

CLEARTEXT communication to xxx not permitted by network security policy

Android P http网络请求不通,报出异常:java.net.UnknownServiceException: CLEARTEXT communication to xxxx not permitted by network security policy Google表示,为保证用户数据和设备......

醉雨
10分钟前
0
0
开发函数计算的正确姿势 —— 移植 next.js 服务端渲染框架

首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准...

阿里云云栖社区
56分钟前
1
0
Windows获取其他进程中Edit控件的内容

最近做的MFC项目中,有个获取其他进程中Edit控件内容的需求,本来以为是个很简单的问题,但是来来回回折腾了不少时间,发博记录一下。   刚开始拿到这个问题,很自然的就想到GetDlgItemTex...

WinkJie
今天
1
0
Mysql数据库基于流量审计mysql-sniffer部署

Base Enviroment:CentOS release 6.5 +10.1.40-MariaDB MariaDB Server 安装完后,经过Navicat客户端工具,java web项目,linux操作系统myql客户端,三个维度(客户端)的实测。 实测结果是:...

硅谷课堂
今天
1
0
Visual Paradigm 教程[UML]:如何在SoaML中建模多方服务?(下)

下载Visual Paradigm最新试用版 第三部分 - 用UML序列图指定多方编排 在多服务合同中,可以在交互图中显示各方之间的通信和编排。像UML序列图这样的交互图显示了谁调用谁以及何时进行调用。让...

xiaochuachua
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部