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>

tinyxml学习总结_第1张图片

父、子和同级节点

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

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

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

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

tinyxml学习总结_第2张图片

注释:父节点: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 

    tinyxml学习总结_第3张图片

    树顶部的 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学习总结_第4张图片

 

 

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


tinyxml学习总结_第5张图片

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



 

你可能感兴趣的:(xml)