Delphi6/7 中XML 文档的应用
XML文档是新一代的Web数据格式。它可以用树的形式储存一切数据。
下面介绍一下TXMLDocument控件的一些用法:
已定义:
XMLDoc: TXMLDocument;
EncoderMIME: TIdEncoderMIME;
DecoderMIME: TIdDecoderMIME;
xn:IXMLNode;
f:TFileStream;
EncoderMIME和DecoderMIME是Indy控件中的Mime工具,用来把所有类型的字符串转换为Mime(Base64)的ASCII码,你用其他的编码方式也可以的,比如:UUE,XXE。
XN是XML文档的树结点。F是文件流。
首先,加载XML文档
xmldoc.LoadFromFile(‘XML文档的文件名');
xmldoc.Active:=true; //使XML文档变为活动
再次,定位Xn在XML文档中的位置(假设是的二层的第四个节点)
xn:=xmldoc.Node;
xn:=xn.ChildNodes.Nodes[1]; //节点数是从零开始的,所以要减一
xn:=xn.ChildNodes.Nodes[3];
接着,
增加下一级节点
xn:=xn.AddChild(‘新的节点名字’)
xn.Text:=’节点的文本内容’
xn.Attributes['节点的第一个属性']:=’属性值’
xn.Attributes['节点的第二个属性']:=’属性值’
修改节点,(节点的名字是不能改的)
xn.Text:=’新的文本内容’
xn.Attributes['节点的第二个属性']:=’ 新的属性值’
删除节点Xn
xn.ParentNode.ChildNodes.Delete(xn.ParentNode.ChildNodes.IndexOf(xn));
利用Xn.Text存放文件,
f:=TFileStream.Create('要存放的文件名',fmOpenRead);
xn.Text:=EncoderMime.Encode(f); //转换格式,文件编码
f.Free;
解出Xn.Text中的文件,
f:=TFileStream.Create(‘目标文件名’,fmCreate);
DecoderMime.DecodeToStream(xn.Text,f);
f.Free;
最好利用Xn.attribute来增加一个属性来表示文件的编码方式,比如
xn.Attributes['Type']='Base64'
这样改上面的两个片段为:
xn.Attributes['Type']:='Base64';
f:=TFileStream.Create('要存放的文件名',fmOpenRead);
xn.Text:=EncoderMime.Encode(f);
f.Free;
if xn.IsTextElement //Xn中存在Text
then if xn.HasAttribute('Type') then //Xn中存在属性’Type’
if xn.Attributes['Type']='Base64' then
begin
f:=TFileStream.Create(‘目标文件名’,fmCreate);
DecoderMime.DecodeToStream(xn.Text,f);
f.Free;
end;
最后给出一个利用TTreeView来显示XML文档的所有树结构
XMLTree是TTreeView类
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;
使用方法
ReadXMLTree(nil,xmldoc.Node);
当然要先加载XML文档 J ^_^
至于使用XML文档作为In-memory数据库就要用Delphi6/7的XML Mapping Tool了,先建立一个最简单的XML文档,再用MappingTool生成.XTR文件,用TXMLDataSetProvider作为数据提供者,TdataSet连接,搞个TTable就可以把XML作为数据库用了,详细的请看Delphi6/7的Demos目录下的Internet\XMLTransformProvider!
http://www.cnblogs.com/toosuo/archive/2007/12/17/1001453.html
Delphi6/7 中XML 文档的应用的更多相关文章
- Spring中xml文档的schema约束
最开始使用Spring框架的时候,对于其配置文件xml,只是网上得知其使用方法,而不明其意.最近想着寻根问底的探究一下.以下是本文主要内容: 1.配置文件示例. <?xml version= ...
- C#中XML文档注释编译DLL引用到其它项目
引用地址:http://zhidao.baidu.com/link?url=jSGYEBysE4gBExtNsHCVk3vd2OK2cMlaf02cS79GdRuGueTBdFJB0btOdBYkg_ ...
- 从多个XML文档中读取数据用于显示webapi帮助文档
前言: 你先得知道HelpPageConfig文件,不知道说明你现在不需要这个,所以下文就不用看了,等知道了再看也不急.当然如果你很知道这个,下文也不用看了,因为你会了. 方法一: new XmlDo ...
- Win 10 开发中Adaptive磁贴模板的XML文档结构,Win10 应用开发中自适应Toast通知的XML文档结构
分享两篇Win 10应用开发的XML文档结构:Win 10 开发中Adaptive磁贴模板的XML文档结构,Win10 应用开发中自适应Toast通知的XML文档结构. Win 10 开发中Adapt ...
- 详解xml文件描述,读取方法以及将对象存放到xml文档中,并按照指定的特征寻找的方案
主要的几个功能: 1.完成多条Emp信息的XML描述2.读取XML文档解析Emp信息3.将Emp(存放在List中)对象转换为XML文档4.在XML文档中查找指定特征的Emp信息 dom4j,jaxe ...
- 【HTML/XML 10】XML文档中的Schema文件
导读:DTD是对XML文档进行有效性验证的方法之一,事实上,继DTD之后,出现了用来规范和描述XML文档的第二代标准:Schema.Schema是DTD的继承,但是也有其不同的地方,它是真正的以独立的 ...
- 五个在XML文档中预定义好的实体
下面是五个在XML文档中预定义好的实体: < < 小于号 > > 大于号 & & 和 ' ' 单引号 " " 双引号 实体 ...
- java中的xpath,读取xml文档。
1,入门 XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言. XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力.起初 X ...
- C#操作Xml:XSLT语法 在.net中使用XSLT转换xml文档示例
XSL即可扩展的样式表文件. 可以格式化xml的显示,也可以将xml转换成需要的另一种格式. 学习XSL必须熟悉XPath.XSL和XPath一样简单强大,容易学习. 1. XSL既然可以格式化xml ...
随机推荐
- NOIP2015 运输计划 - 二分 + 树链剖分 / (倍增 + 差分)
BZOJ CodeVS Uoj 题目大意: 给一个n个点的边带权树,给定m条链,你可以选择树中的任意一条边,将它置为0,使得最长的链长最短. 题目分析: 最小化最大值,二分. 二分最短长度mid,将图 ...
- 一起学Python:字符串介绍
字符串介绍 <1>python中字符串的格式 如下定义的变量a,存储的是数字类型的值 a = 100 如下定义的变量b,存储的是字符串类型的值 b = "hello itcast ...
- C++动态数组简单的模拟二元堆
//C++动态数组简单的模拟二元堆 #include<iostream> using namespace std; class BinaryHeap { private: int cap; ...
- ckplayer 插件在线视频播放
1. CKplayer 它是一款用于网页上播放视频的插件,支持的格式有:http 协议上的 flv, f4v, mp4格式,同时支持 rtmp 视频流格式播放.使用非常简单. <html> ...
- 调试分析工具 (C/C++)
一.静态分析工具 cppcheck cppcheck主要用于对C/C++源代码进行分析检查的一个开源工具,可以用来检测未使用的变量.越界访问.内存泄漏等问题. 使用方法 cppcheck --enab ...
- windows 10 常用快捷键
alt + space:最大.最小.关闭: 多屏互动:win+p 仅此电脑屏幕:复制:拓展:仅第二屏幕: 0. 不同于之前版本的变化 切换输入法:shift + alt: win + space: w ...
- Linux运维完全小白入门指南
前几天整理了一下自己入门时候搜集的资料,一边整理一边回忆. 那时候我还是个小白,用虚拟机装了个CentOS系统来玩,但是总也装不上,在论坛上求助也没人理.半天终于有个人说在某网站看过这个问题,我又找了 ...
- mongoDB 入门手册
MongoDB - 简介 官网:https://www.mongodb.com/ MongoDB 是一个基于分布式文件存储的数据库,由 C++ 语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储 ...
- Logical partitioning and virtualization in a heterogeneous architecture
A method, apparatus, and computer usable program code for logical partitioning and virtualization in ...
- WPF 同一窗口内的多线程/多进程 UI(使用 SetParent 嵌入另一个窗口)
原文 WPF 同一窗口内的多线程/多进程 UI(使用 SetParent 嵌入另一个窗口) WPF 的 UI 逻辑只在同一个线程中,这是学习 WPF 开发中大家几乎都会学习到的经验.如果希望做不同线程 ...