基本的 XML 文件及XML的节点类型

转载 2006年06月07日 13:40:00

XML 文件的基本组成部分包括:

  • XML 声明:基本的声明 <?xml version"1.0"?> 将这个文件定义为 XML 文档。在声明中指定一种字符编码的情况并不鲜见,如下所示。通过这种方式,不管该 XML 文件使用的语言或字符编码是什么,只要解析器理解特定的编码,它就能够正确地读取该 XML 文件。
  • DOCTYPE 声明:XML 是人机之间交换信息的便利手段,但是要使它能够顺利地工作,必须要有一个公共的词汇表。可选的 DOCTYPE 声明可用于指定一个应该用来与此文件做比较的文档(在本例中为 orders.dtd),以确保不会产生任何混淆或丢失信息(例如,丢失一个 userid 或错误拼写某个元素名称)。以这种方式处理过的文档称为有效的文档。成功的有效性检查并不是 XML 所必需的,后面的例子实际上从文档中省略了 DOCTYPE 声明。
  • 数据本身:XML 文档中的数据必须包含在单个根元素内,比如下面的 orders 元素。要使 XML 文档得到处理,它必须是格式良好的(well-formed)

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE ORDERS SYSTEM "orders.dtd">

    <orders>

       <order>
          <customerid limit="1000">12341</customerid>
          <status>pending</status>
          <item instock="Y" itemid="SA15">
             <name>Silver Show Saddle, 16 inch</name>
             <price>825.00</price>
             <qty>1</qty>
          </item>
          <item instock="N" itemid="C49">
             <name>Premium Cinch</name>
             <price>49.00</price>
             <qty>1</qty>
          </item>
       </order>
       <order>
          <customerid limit="150">251222</customerid>
          <status>pending</status>
          <item instock="Y" itemid="WB78">
             <name>Winter Blanket (78 inch)</name>
             <price>20</price>
             <qty>10</qty>
          </item>
       </order>

    </orders>
     

    DOM 本质上是节点的集合。 由于一个文档中可能包含不同类型的信息,因此要定义不同类型的节点。

    在创建 XML 文件的层次时,产生某些在概念上类似如下结构的内容是很自然的。 虽然它是对所包括的数据的精确描述,但它不是对 DOM 所表示的数据的精确描述。这是因为它表示了 元素,但是没有表示 节点

    DOM 的初步层次图

    元素和节点的区别

    元素只是节点的一种类型,它们甚至不表示上图似乎要揭示的内容。 元素节点是信息的容器。该信息可能是其他元素节点、文本节点、属性节点或其他类型的信息。对该文档的更精确描绘如下:

    正确的 DOM

    矩形框表示元素节点,椭圆表示文本节点。 当一个节点包含在另一个节点之内时,它就被认为是后一个节点的孩子

    注意 orders 元素节点不是只有两个子节点,而是有五个子节点:两个 order 元素,以及它们之间后周围的文本节点。即使没有内容,order 元素之间的空白也会构成一个文本节点。类似地, item 具有七个子节点:namepriceqty,以及它们周围的四个文本节点。

    还要注意,可能被认为是某个元素的内容的东西,比如“Premium Cinch”,实际上却是作为 name 元素的子节点的文本节点的内容。

    基本的节点类型:文档、原始、属性和文本

  • 元素:元素是 XML 的基本构造模块。通常,元素拥有子元素、文本节点,或两者的组合。元素节点也是能够拥有属性的唯一节点类型。
  • 属性:属性节点包含关于元素节点的信息,但是并不实际认为是元素的孩子,比如在下面的例子中:
    <customerid limit="1000">12341</customerid>
    
  • 文本:文本节点就是名副其实的文本。它可以由更多信息组成,也可以只包含空白。
  • 文档:文档节点是文档中其他所有节点的父亲。

    不太常见的节点类型:CDATA、注释、处理指令,以及文档片断

    CDATA:字符数据(Character Data)的缩写,这是一个特殊的节点,它包含不应该被解析器分析的信息。相反,它包含的信息应该以纯文本传递。例如,可能会为了特殊目的而存储 HTML 标签。在通常情形下,处理器可能尝试为所存储的每个标签创建元素,而这样可能导致文档不是格式良好的。这些问题可用通过使用 CDATA 节(section)来避免。这些节使用特殊的符号来编写:

    <[CDATA[Important:  Please keep head and hands inside ride at all times.]]>

    注释:注释包括关于数据的信息,通常被应用程序忽略。它们写为如下形式:

    <!--  This is a comment. -->

    处理指令:处理指令是专门针对应用程序的信息。其中一些例子包括要执行的代码或者关于从何处寻找样式表的信息。例如:

    <?xml-stylesheet type="text/xsl" href="foo.xsl"?>

  • 文档片断:要使文档成为格式良好的,它必须仅有一个根元素。有时在使用 XML 的时候,必须临时创建多组元素,这些元素不一定满足这个要求。文档片断看起来类似如下:
          <item instock="Y" itemid="SA15">
             <name>Silver Show Saddle, 16 inch</name>
             <price>825.00</price>
             <qty>1</qty>
          </item>
          <item instock="N" itemid="C49">
             <name>Premium Cinch</name>
             <price>49.00</price>
             <qty>1</qty>
          </item>
    

    其他类型的节点包括实体、实体引用节点,以及注解。

  • 相关文章推荐

    XML 节点类型

    基本的节点类型:文档、原始、属性和文本 XML 中最常见的节点类型包括:元素:元素是 XML 的基本构造模块。通常,元素拥有子元素、文本节点,或两者的组合。元素节点也是能够拥有属...

    XML中元素与节点的区别

    Element是Node的扩展,除了Element之外,Attribute(属性)、Text(文本节点)、PI(处理指令)、 Document(文档)等等都是Node。 例如,用Element可以方...

    Python:Dom解析XML文件(读XML)

    这一篇文章接着前一篇来接续讲解如何使用Dom方式操作XML数据,这一篇文章主要介绍如何解析(parse)XML文件,本文实例XML文件是上一篇的生成的文件,我们看看能不能完整的读出来,这个XML文件内...

    linux find prune exec 排除某目录或文件 执行

    查找cache目录下不是html的文件 find ./cache ! -name '*.html' -type f 列出当前目录下的目录名,排除includes目录,后面的-print...
    • ysdaniel
    • ysdaniel
    • 2012年09月19日 13:44
    • 20844

    jdom jar 包 解析xml 文件

    • 2014年05月08日 19:50
    • 148KB
    • 下载

    xml 文件读写,有实例

    • 2010年05月06日 19:24
    • 203KB
    • 下载

    c# 操作 xml 文件的 自定义类

    方便 以后操作xml文件,写的类,未完全测试,有问题我会修正 using System; using System.Collections.Generic; using System....

    xml 文件 模板 大家都来下啊

    • 2010年05月11日 22:00
    • 4KB
    • 下载

    Tomcat web.xml 文件详解

    • 2009年07月15日 20:22
    • 75KB
    • 下载

    JPA 不在 persistence.xml 文件中配置每个Entity实体类的2种解决办法

    在Spring 集成 Hibernate 的JPA方式中,需要在persistence配置文件中定义每一个实体类,这样非常地不方便,远哥目前找到了2种方法。   这2种方式都可以实现不用p...
    • sz_bdqn
    • sz_bdqn
    • 2016年02月02日 01:44
    • 1672
    内容举报
    返回顶部
    收藏助手
    不良信息举报
    您举报文章:基本的 XML 文件及XML的节点类型
    举报原因:
    原因补充:

    (最多只允许输入30个字)