http://delphi.about.com/od/windowsshellapi/a/xml_delphi.htm

Creating, Parsing and Manipulating XML Documents with Delphi
Delphi and the Extensible Markup Language
By Zarko Gajic, About.com Guide
使用Delphi创建,解析,操纵XML文档
What is XML?
XML is the 'Extensible Markup Language', universal language for data on the Web. XML gives developers the power to deliver structured data from a wide variety of applications to the desktop for local computation and presentation. XML is also an ideal format for server-to-server transfer of structured data. Using an XML parser, software is able to walk through the hierarchy of the document extracting the structure of the document, its content, or both. XML is in no way limited to Internet use. In fact, XML's main strength - organizing information - makes it perfect for exchanging data between different systems
XML looks much like HTML. However, whereas HTML describes the layout of a page (for data displaying purposes) XML is concerned with defining and describing data, it describes the type of content. Hence, 'extensible' because it is not a fixed format like HTML.

We can also think of each XML file as a mini database. Tag, or markups (the text surrounded by angle brackets) in an XML document delineate the records and fields. The text between the tags is the data. We perform operations like retrieving, updating, and inserting data with XML using a parser and a set of objects exposed by the parser.
As a Delphi programmer, what you need to know is how to use XML. Therefore, in this article I'll be presenting several ways in which XML can be integrated into your Delphi applications.

什么是XML
XML是可扩展的标记语言,网络上数据的公共语言。XML给开发者传递结构化的数据从品种繁多的应用程序到桌面以供本地计算和展示的能力。
XLM也是一个从服务器到服务器端的结构化数据传递的理想的格式.使用XML解析器,软件可以轻而易举地通过文档的组织结构解析文档的结构,它的内容,或者两者。XML决不限制于在Internet上使用,事实上,XML的主要长处-组织信息-使非常完美的在不同的两个系统间交换数据。XML十分像HTML,然而,尽管HTML描述了页面的页面的布局(为显示数据)XML关注于定义和描述数据,它描述内容的类型.因此,可扩展性是因为它不像HTML一样是固定的。
我们也可以认为每个XML文件都是一个小型的数据库。XML文档中的标签,标式(被尖括号包围的文本)描述记录和域,两个标签之间的文本是数据.
我们用XML解析器执行像检索,更新,和插入数据的操作并且对象的集合也是由解析器显示。
作为一个Delphi开发者,你需要做的就是知道如何去用XML,在这篇文章中,我将展示几个XML能被融合到你的Delphi程序中去的方法。

Saving TTreeView items to XML
First, we build a sample application hosting a TTreeView component, two ImageList components and one TXMLDocument component. One image list is associated with the Images property of a TreeView, another attached to the StateImages property (see: how to add check boxes and radio buttons to a tree view).
保存TTreeView项目到XML中
首先我们建立一个存放一个TTreeView组件,两个ImageList组件和一个TXMLDocument组件.一个ImageList关联到TTreeView的Image属性,另一个附加到StateImage属性(见:如何添加CheckBox和RadioButtons到TreeView中).
Procedure Tree2XML(tree: TTreeView);
var
  XMLDoc: TXMLDocument;
  iNode: IXMLNode;
  tn: TTreeNode;
  procedure ProcessTreeItem(tn: TTreeNode; iNode: IXMLNode);
  var
    cNode: IXMLNode;
  Begin
    if tn = nil then Exit;
    cNode := iNode.AddChild('Item');
    cNode.Attributes['text'] := tn.Text;
    cNode.Attributes['ImageIndex'] := tn.ImageIndex;
    cNode.Attributes['StateIndex'] := tn.StateIndex;
    tn := tn.getFirstChild;
    while (tn <> nil) do
    Begin
      ProcessTreeItem(tn, iNode);
      tn := tn.getNextSibling;
    end;
  end;
Begin
  XMLDoc := TXMLDocument.Create(nil);
  XMLDoc.Active := True;
  iNode := XMLDoc.AddChild('TreeToXML');
  iNode.Attributes['app'] := ParamStr(0);
  tn := tree.TopItem;
  while tn <> nil do
  Begin
    ProcessTreeItem(tn, iNode);
    tn := tn.getNextSibling;
  end;
  XMLDoc.SaveToFile(ChangeFileExt(ParamStr(0), 'XML'));
  FreeAndNil(XMLDoc);
end;

Procedure XML2Tree(tree: TTreeView; XMLDoc: TXMLDocument);
var
  iNode: IXMLNode;
  procedure ProcessNode(tn: TTreeNode; Node: IXMLNode);
  var
    cNode: IXMLNode;
  Begin
    if Node = nil then Exit;
    tn := Tree.Items.AddChild(tn, Node.Attributes['text']);
    tn.ImageIndex := Integer(Node.Attributes['imageIndex']);
    tn.StateIndex := Integer(Node.Attributes['stateIndex']);
    Cnode := Node.ChildNodes.First;
    while (CNode <> nil) do
    Begin
      ProcessNode(tn, Cnode);
      CNode := Cnode.NextSibling;
    end;
  end;
Begin
  Tree.Items.Clear;
  XMLDoc.FileName := ChangeFileExt(ParamStr(0), '.XML');
  XMLDoc.Active := True;
  INode := XMLDoc.DocumentElement.ChildNodes.First;
  if INode = nil then Exit;
  while (INode <> nil) do
  Begin
    ProcessNode(nil, INode);
    INode := INode.NextSibling;
  end;
  FreeAndNil(XMLDoc);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
  XML2Tree(tree, XMLDocument1);
end;

转载于:https://www.cnblogs.com/abcliu110/archive/2010/06/22/1762383.html

使用Delphi创建,解析,操纵XML文档相关推荐

  1. 【Qt】DOM创建和操作XML文档

    00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. 创建XML文档 04. 读取XML文档 05. 增加XML节点 06. 查找.删除.更新XML文档 07. 附录 01. ...

  2. [Qt教程] 第28篇 XML(二)使用DOM创建和操作XML文档

    [Qt教程] 第28篇 XML(二)使用DOM创建和操作XML文档 楼主  发表于 2013-5-21 22:00:51 | 查看: 475| 回复: 0 使用DOM创建和操作XML文档 版权声明 该 ...

  3. C#来创建和读取XML文档 [转]

    C#来创建和读取XML文档  [关键词]:XML 录入:小鱼之家 来源:http://fisher.xundain.com 时间:2005-3-3 23:41:54 点击:85次 扩展标记语言XML( ...

  4. C#来创建和读取XML文档

    扩展标记语言XML(eXtensible Markup Language),是由W3C组织制定的.做为用于替代HTML语言的一种新型的标记语言, XML内部有着很多基本标准,XML就是通过与这些相关标 ...

  5. 用Java语言遍历读取和操纵XML文档

    实验环境:jdk1.9 实验工具:eclipse 问题: Students.xml <?xml version="1.0" encoding="GB2312&quo ...

  6. XML 解析XML文档 XML约束

    XML 什么是XML Extensible Markup Language(可扩展的标记语言) 他是一个语言,有自己的语法,和Java以及其他的编程无关 "标记" 在文件中包含类似 ...

  7. Android数据存储——2.文件存储_C_DOM解析XML文档

    今天学习Android数据存储--文件存储_DOM解析XML文档 位于org.w3c.dom操作XML会比较简单,就是将XML看做是一颗树,DOM就是对这颗树的一个数据结构的描述,但对大型XML文件效 ...

  8. xml教程之java解析xml文档

    1.java解析xml文件介绍 XML解析方式分为两种:DOM方式和SAX方式 DOM:Document Object Model,文档对象模型.这种方式是W3C推荐的处理XML的一种方式. SAX: ...

  9. libxml -- 解析 XML 文档

    参考 http://xmlsoft.org/ http://www.miidoo.cn/info_detail-204.html http://www.blogjava.net/wxb_nudt/ar ...

  10. java w3c xml_org.w3c.dom(java dom)解析XML文档

    首先来了解点Java DOM 的 API: 1.解析器工厂类:DocumentBuilderFactory 创建的方法:DocumentBuilderFactory dbf = DocumentBui ...

最新文章

  1. linux学习blog
  2. 刷抖音对手机有什么要求_6频段全面5G手机 nova6 5G成新年换机最佳之选
  3. 一个基于Mule的企业服务总线的案例(关于JMS)
  4. iview tabs里面放入 i-switch slot的写法
  5. wordpress mysql 挂了_大神们,诊断一下,wampserver的mysql老是挂掉!
  6. windows2008开机占用多少内存_如何提升电脑开机速度?
  7. 【C++】 11_新型的类型转换
  8. 4.企业安全建设指南(金融行业安全架构与技术实践) --- 内控合规管理
  9. 微分算法 非侵入式负荷识别_基于差量特征提取与模糊聚类的非侵入式负荷监测方法...
  10. 机器视觉算法与应用-双语版-学习笔记
  11. 计算机组成原理————寄存器寻址方式大总结
  12. gdb 查看是否 栈溢出_64位Linux栈溢出教程
  13. Linux中ps和netstat中的相关知识点
  14. Windows 2008 Server搭建Radius服务器
  15. Iphone蓝牙通信
  16. 周易正易 p1-100
  17. 当程序员追求佛系,会发生什么……
  18. 接入微信universal link微信校验不通过
  19. NLP——语料库信息提取和处理方法
  20. 创建React项目(入门保姆级)

热门文章

  1. EMNLP 2020 | RecAdam: 在更少的遗忘下精调预训练语言模型
  2. 【论文解读】结合概率图模型和神经网络做图片问答
  3. 算法工程师当前选哪个方向好?1,计算机视觉;2,自然语言处理;3,风控;4,推荐系统?...
  4. 综述 | 跨语言自然语言处理论文汇总
  5. 本周论文推荐 -- 对抗生成网络、知识图谱补全、对话系统、文本生成
  6. 初学者 | 分词的那些事儿
  7. Nothing is impossible!——致敬Uzi
  8. 我们真的搞懂这些排序算法了吗?(一)
  9. 【每日算法Day 72】谷歌面试题:又双叒叕是位运算,最详细的自动机推导过程...
  10. pytorch 中Tensor.uniform_代替numpy.random.uniform/ permute函数 /torch.mm()和torch.matmul()