delphi7写的个人笔记本(模版功能已经实现)
来源:互联网 发布:padding tensorflow 编辑:程序博客网 时间:2024/05/17 10:28
就本程序中使用的xml存储方法,我就以我使用的方法为介绍,供大家看看。。。。。。
delphi7对于xml已经有很好的支持,对xml实现的主要类是TXMLDocument类,这个控件在internet选项中。TXMLDocument控件是不可视控件。先给你们看我写的一个解析XML文件的一段程序吧。
先看一下如何解析XML文件:
procedure TForm3.FormCreate(Sender: TObject);
var
xn:IXMLNode;
nodelist:IXMLNodeList;
i,nCount:Integer;
begin
XMLDocument1.LoadFromFile('xuexi/xuexi.xml');
XMLDocument1.Active := True;
nodelist := XMLDocument1.DocumentElement.ChildNodes;
nCount := nodelist.Count;
for i := 0 to nCount-1 do
begin
xn:=nodelist.Get(i);
with lv1.Items.Add do //lv1是listview控件,该控件主要做的页面数据显示
begin
Caption:=xn.ChildNodes.Nodes['title'].Text;
subitems.Add(xn.ChildNodes.Nodes['description'].Text);
subitems.Add(xn.ChildNodes.Nodes['writeTime'].Text);
end;
end;
end;
你可以看到加载xml文件TXMLDocument已经有了LoadFromFile这个过程,其实TXMLDocument在使用的过程中先生成IXMLDocument,我们是通过使用IXMLDocument来操作XML的,下面来说一下本段程序中最主要的不部分。
nodelist := XMLDocument1.DocumentElement.ChildNodes;
nCount := nodelist.Count;
nodelist定义为IXMLNodeList类型,XMLDocument1.DocumentElement.ChildNodes;DocumentElement返回的是根节点,它的返回值是IXMLNode,而XMLDocument1.DocumentElement.ChildNodes返回的是IXMLNodeList,这个我们可以看作是根节点下子节点的集合,而一般我们操作的也就是这些子节点。
nodelist.count返回的根节点下的子节点数量,这里我要说明一下,对于XML文件中对于子节点的定义,如
<?xml version="1.0" encoding="GBK"?>
<xuexi>
<records name="tttt">
<title>tttt</title>
<mainInfomation>hhhhhhhhhhh</mainInfomation>
<description>yyyy</description>
<writeTime>2013-07-28 14:12:41</writeTime>
</records>
<records name="mmm">
<title>mmm</title>
<mainInfomation>mmmmm</mainInfomation>
<description>MM</description>
<writeTime>2013-07-28 14:12:41</writeTime>
</records>
</xuexi>
在这里ndelist.count返回的值应该是2,也就是两个records标签所代表的范围。IXMLNodeList对于节点坐标的安排和数组一样,都是从0开始,如果你想得到根节点下的第一个节点的话,那么可以使用nodelist.get(0),该函数返回的是IXMLNode,通过IXMLNode我们访问其中特定标签的你内容。如xn.childNodes.nodes['title'].text。
对于上面的XML文件,我定义的根节点下的子节点的名称都是一样的,那么这样的XML文件在解析的时候怎么处理!
你可以看到,虽然根节点下的子节点的名称是一样的,但是我设置了它的属性name,通过属性名称来查找对应的records节点。
在delphi7中可以使用这样的方法nodeList.Get(0).GetAttributeNS('name',''),这个返回的一个string类型数据;
在操作XML的过程中我还遇到了一个中文不能保存的问题,我开始设置XML编码为utf-8,在保存的时候总是失败,后面在网上查额资料,改成了GBK之后就可以了。。插(在delphi7中关于boolean的true和false,在delphi7中-1和true相等,0和false相等)
- delphi7写的个人笔记本(模版功能已经实现)
- delphi7写的个人笔记本(模版功能已经实现)介绍(一)
- delphi7写的个人笔记(模版功能已经实现)介绍三
- delphi7的调试功能
- Delphi7中实现停靠功能
- 个人写的单键模式模版的例子
- 在Delphi7中实现停靠功能
- 在Delphi7中实现停靠功能
- 在Delphi7中实现停靠功能
- 自己写了一个链表功能还不完善但是简单的增删改查功能都已经实现了
- Delphi7调用vs.net写的WebService
- SQLProgress 的导出功能源代码出售 Delphi7
- 个人笔记本
- 模版的设计和切换已经完成
- java web实现excel模版下载功能(1)
- 全功能智能车之在写该博客之前已经完成的功能总结(第二篇)
- 笔记本USB的PowerShare功能
- ios圆角按钮的实现已经验证功能
- Linux常用命令详解之文件处理命令一
- poj2420
- 《C++编程规范》读书笔记(上)
- SSH的整合
- [转]多模匹配算法与dictmatch实现
- delphi7写的个人笔记本(模版功能已经实现)
- OGNL 与 Struts 2
- 测试工具集合
- 各种传递 函数指针 异常
- 为程序员准备的7个网站
- How main() is executed on Linux
- Linux下安装配置JDK6
- Linux下Mysql数据库的配置安装和简单使用
- 【GPU开发笔记】一:CUDA初探——环境配置