tinyxml学习总结


1.XML DOM 节点树

<bookstore>
  
<book category="cooking">
    
<title lang="en">Everyday Italian</title> 
    
<author>Giada De Laurentiis</author> 
    
<year>2005</year> 
    
<price>30.00</price> 
  
</book>
</bookstore>


父、子和同级节点

节点树中的节点彼此之间都有等级关系。

父、子和同级节点用于描述这种关系。父节点拥有子节点,位于相同层级上的子节点称为同级节点(兄弟或姐妹)。

在节点树中,顶端的节点成为根节点 根节点之外的每个节点都有一个父节点 节点可以有任何数量的子节点 叶子是没有子节点的节点 同级节点是拥有相同父节点的节点

下面的图片展示出节点树的一个部分,以及节点间的关系:


注释:父节点:Parent Node,子节点:Children Node,同级节点:Sibling Node。

XML 文档中的每个成分都是一个节点

节点

根据 DOM,XML 文档中的每个成分都是一个节点

DOM 是这样规定的:

整个文档是一个文档节点 每个 XML 标签是一个元素节点(element) 包含在 XML 元素中的文本是文本节点(text) 每一个 XML 属性是一个属性节点(attribute)

注释属于注释节点

DOM 实例

请看下面的 XML 文件 (books.xml):

<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book category="COOKING">
  
<title lang="en">Everyday Italian</title> 
  
<author>Giada De Laurentiis</author> 
  
<year>2005</year> 
  
<price>30.00</price> 
</book>
<book category="CHILDREN">
  
<title lang="en">Harry Potter</title> 
  
<author>J K. Rowling</author> 
  
<year>2005</year> 
  
<price>29.99</price> 
</book>
<book category="WEB">
  
<title lang="en">XQuery Kick Start</title> 
  
<author>James McGovern</author> 
  
<author>Per Bothner</author> 
  
<author>Kurt Cagle</author> 
  
<author>James Linn</author> 
  
<author>Vaidyanathan Nagarajan</author> 
  
<year>2003</year> 
  
<price>49.99</price> 
</book>
<book category="WEB">
  
<title lang="en">Learning XML</title> 
  
<author>Erik T. Ray</author> 
  
<year>2003</year> 
  
<price>39.95</price> 
</book>
</bookstore>

 

 

在上面的 XML 中,根节点是 <bookstore>。文档中的所有其他节点都被包含在 <bookstore> 中。

根节点 <bookstore> 有四个 <book> 节点。

第一个 <book> 节点有四个节点:<title>, <author>, <year> 以及 <price>,其中每个节点都包含一个文本节点,"Everyday Italian", "Giada De Laurentiis", "2005" 以及 "30.00"。


文本总是存储在文本节点中

在 DOM 处理中一个普遍的错误是,认为元素节点包含文本。

不过,元素节点的文本是存储在文本节点中的。

在这个例子中:<year>2005</year>,元素节点 <year>,拥有一个值为 "2005" 的文本节点。

"2005" 不是 <year> 元素的值!


大多数浏览器都内建了供读取和操作 XML 的 XML 解析器。解析器把 XML 转换为 JavaScript 可存取的对象。


解析 XML

所有现代浏览器都内建了用于读取和操作 XML 的 XML 解析器。

解析器把 XML 读入内存,并把它转换为可被 JavaScript 访问的 XML DOM 对象。

微软的 XML 解析器与其他浏览器中的解析器是有差异的。微软的解析器支持对 XML 文件和 XML 字符串(文本)的加载,而其他浏览器使用单独的解析器。不过,所有的解析器都含有遍历 XML 树、访问、插入及删除节点的函数。

Internet Explorer 使用 loadXML() 方法来解析 XML 字符串,而其他浏览器使用 DOMParser 对象

<books> 
  <book> 
  <author>Jack Herrington</author> 
  <title>PHP Hacks</title> 
  <publisher>O'Reilly</publisher> 
  </book> 
  <book> 
  <author>Jack Herrington</author> 
  <title>Podcasting Hacks</title> 
  <publisher>O'Reilly</publisher> 

  </book> 

  </books> 


 当 XML 文档的标记结构和内容得到外部模式文件的验证后,XML 文档就是正确的。模式文件可以用不同的格式指定。对于本文来说,所需要的只是格式良好的 XML 


树顶部的 books 节点有两个 book 子标记。在每本书中,有 author、publisher 和 title 几个节点。author、publisher 和 title 节点分别有包含文本的文本子节点。


 

 

 

 

 

 

2.tinyXML

DOM库是把XML格式的数据读成DOM对象,读到内存中,是一种树数据结构,完成对树的遍历。.NET中有DOM解析,但是由于考虑到要跨平台,.NET毕竟是MS的东西,功能是很强大,但是缺点也很明显。所以我们还是要看看tinyxml这个和OS或平台无关的第三方开源库。

在TinyXML中,根据XML的各种元素来定义了一些类:

        TiXmlBase:整个TinyXML模型的基类。
        TiXmlAttribute:对应于XML中的元素的属性。
        TiXmlNode:对应于DOM结构中的节点。
        TiXmlComment:对应于XML中的注释。
        TiXmlDeclaration:对应于XML中的申明部分,即<?versiong="1.0" ?>。
        TiXmlDocument:对应于XML的整个文档。
        TiXmlElement:对应于XML的元素。
        TiXmlText:对应于XML的文字部分。
        TiXmlUnknown:对应于XML的未知部分。 
        TiXmlHandler:定义了针对XML的一些操作。


 

 

可以看出整个tinyXML的类结构是很简单的,就是简单的继承,我们看看下面的这个例子"demo.xml"就会更加的明白;


不使用预编译头,不然编译出错,把tinyxml下的2个头文件和4个原文件包含在工程里。



 

转载于:https://www.cnblogs.com/NeuqUstcIim/archive/2008/09/19/1294443.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值