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相等)

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 眼镜被电焊打了怎么办 电焊闪的眼睛疼怎么办 烧了电焊眼睛疼怎么办 用了电焊眼睛痛怎么办 烧电焊脸上红痛怎么办 眼睛让电焊晃了怎么办 眼被电焊打了怎么办 眼镜弹簧腿坏了怎么办 眼镜框铰链坏了怎么办 金属眼镜框歪了怎么办 眼镜框螺丝断了怎么办 眼镜被压变形了怎么办 金属眼镜腿断了怎么办 眼镜弹簧腿断了怎么办 眼镜腿螺丝太紧怎么办 眼镜金属柄断了怎么办 金属眼镜腿折了怎么办 眼镜腿中间断了怎么办 塑料眼镜腿断了怎么办 眼镜上的螺丝拧不紧怎么办 眼镜的把坏了怎么办 把眼镜坐坏了怎么办 梦见眼镜腿掉了怎么办 眼镜的腿掉了怎么办 眼镜腿的螺丝掉了怎么办 爱大爱眼镜掉腿了怎么办 合金眼镜腿断了怎么办 手关节复位h疼痛怎么办 我叫mt红色卡牌怎么办 星盟冲突qq登录怎么办 汽车雷达下雨一直响怎么办 火山小视频封火力怎么办 电脑被当成矿机怎么办 哥华有线机顶盒反应慢怎么办 电脑绣花机编码器坏了怎么办? 伺服电机开起没有力怎么办 西门子冰箱排水孔堵塞怎么办 数控车床西门子系统卡顿怎么办 手机系统不支持多屏互动怎么办 伺服驱动器系统错误报警怎么办 防雷接地电阻不符合规范怎么办