• 1. 第八章 XML技术基础知识本章将对XML基本知识进行详细的分析,然后介绍几种常见的XML文档处理技术,最后用Java对XML文档的解析来结束本章内容的讲解,通过本章的学习,读者将对XML的基础知识有一个比较清楚的认识,并学会使用常见的XML文档操作技术,并且学会使用JAVA语言处理常见的XML文档。
  • 2. 8.1 XML 入门基础XML是元置标语言,只要针对具体的业务需要制定对应的词表,互联网上的用户就可以通过词表读出XML文档的具体语义,这样就可以满足互联网上分布式业务数据处理的需要。这就是XML文档能得到广泛应用的最大原因。
  • 3. 8.1.1 XML简介XML是一种元置标语言,它可以使用标签来描述数据,这些标签不是XML中预定义的,而是由用户自己来定义这些标签,用户可以根据实际中的需要创建各种标签,
  • 4. 8.1.2 XML和HTML的区别在介绍XML和HTML的区别之前,(具体内容请参照书。)
  • 5. 8.1.3 XML和数据库的区别XML虽然也可以存储数据,但是并不是说可以替代数据库用来存储数据,XML的主要目的是为了共享数据,这里所说的存储数据是指可以用XML描述对象的结构和信息,从而实现在用户之间共享数据。 XML并不是要替代数据库,仅仅是在共享数据的时候用来存储对象的结构和信息,这里的存储量是有限的。如果需要存储并管理大量的数据还是要选择数据库。在XML中存储大量数据是不现实的。而且在XML中并不提供数据的管理查询的支持。
  • 6. 8.1.4 XML简单语法XML是一种自描述的语言,虽然语法比较简单,但是还是有比较严格的要求。 1.在XML文档中,必须有XML声明 2.XML文档必须有一个而且只能有一个根结点 3.XML文档的标签必须成对出现 4.XML文档中的标签不可以嵌套使用 5.XML文档对大小写敏感
  • 7. 8.1.5 XML简单示例在上面简单介绍做了XML的简单语法,(具体内容请参照书。)
  • 8. 8.2 文档数据类型定义 DTDXML文档中的标签都是用户自己定义的,如果这种标签可以任意书写而没有任何约束,那这样的文档就没有任何的用处,因为没有人知道这种文档的含义,更别提什么数据共享了,这样的文档只能成为垃圾信息。
  • 9. 8.2.1 DTD概述DTD(Document Type Definition)即文档结构类型定义,DTD用来定义XML文档的模式,通俗的将就是制定XML文档中标签的使用规则。在XML文档中可以包括DTD数据,也可以没有DTD 数据,但是出于共享信息的需求,一般情况下还是需要提供DTD数据。DTD数据使用DTD语言描述的,其中DTD语言是专门描述文档模式的指标语言,DTD本身并不遵循XML的语法。
  • 10. 8.2.2 XML文档元素内容定义使用DTD可以对文档的内容进行约束,XML中的DTD数据必须用标记说明,其语法格式如下。 XML的元素内容定义格式如下。 (具体内容请参照书。)
  • 11. 8.2.3 XML文档元素属性定义XML中的节点元素可以有自己的属性,同样可以使用DTD对XML文档节点元素的属性进行定义。XML文档节点元素的定义语法如下。(具体内容请参照书。)
  • 12. 8.2.4 XML外部引用DTD示例在上面的两个示例程序中,DTD的内容都是包含在XML文档之中,如果一个DTD定义对于多个XML文档都是有效的,把这个DTD包括在每个XML文档中当然是可行的,但是在这里可以又更好的方法,就像在XML中引用外部的CSS文件一样,在XML中也可以引用外部的DTD,这样就可以是多个XML文档共用一个DTD文件,而不是在每个XML文档中都重新定义。(具体内容请参照书。)
  • 13. 8.3 XML文档的显示技术XML是用来描述数据,存储数据的,在前面的例子中我们可以看到,XML文档在浏览器中运行的效果仅仅是节点的树状结构。其实借助与CSS、XSL、DSO等技术,XML文档数据同样可以在浏览器中有丰富的现实效果。这些XML文档的显示技术各有优劣,在本节的内容中将会详细介绍这几种技术的内容。
  • 14. 8.3.1 XML文档显示技术概述XSL是可以显示XML文档数据内容的另一种技术,XSL可以从XML文档中提取部分内容,然后和HTML模版相结合,从而可以用丰富的形式显示XML文档的内容。DSO即数据源对象,也可以用来显示XML文档的内容,DSO可以取出XML文档的数据内容,从而把这些内容嵌套到HTML标签中,借助于HTML标签强大的显示功能来显示XML文档的内容。
  • 15. 8.3.2 CSS样式表显示在本书的3.3节中简单介绍了CSS样式表的基本知识,在本章中着重介绍如何使用CSS来显示XML文档,(具体内容请参照书。)
  • 16. 8.3.3 XSL样式表显示XSL样式表定义了重组输出XML文档内容的规则,它仅仅是一个规则,定义如何输出XML文档中的内容,输出XML文档的哪部分的内容。(具体内容请参照书。)
  • 17. 8.3.4 数据岛对象(DSO)显示使用IE5.0或者更高的版本,XML数据可以以数据岛的形式嵌入HTML页面。数据岛对象(DSO)技术是在HTML文档中加入结构化数据进行处理的技术,结构化数据指的是满足一定结构规范的数据集合,而对称结构的XML文档就是结构化数据,所以使用DSO技术可以把XML的内容嵌入HTML页面中,从而达到显示XML文档的目的。
  • 18. 8.4 XML文档DOM解析技术在上面的章节中介绍了XML文档的显示技术,但是在更多的时候,我们需要读取、创建、操作一个XML文档,这就需要对XML文档进行解析,在接下来的章节中将详细介绍XML的解析技术,在IE浏览器中自带有MSXML解析器,只要你装有IE浏览器就已经有了解析XML文档的环境,在本节中,只介绍使用JavaScript语言操作XML文档的技术,在本章的最后一节将详细介绍使用Java语言解析XML文档的技术。
  • 19. 8.4.1 XML文档DOM解析技术简介XML DOM(XML Document Object Model)即XML文档对象模型,它是XML分析器提供的处理XML文档的API接口,这种接口与具体的语言无关,可以采用任何一种程序设计语言调用这个接口,通过XML DOM编程接口来操作XML文档,包括操作XML文档的结构数据和内容数据。XML DOM对象模型把XML文档理解为有文档节点构成的一个节点树,树和节点都是抽象的概念,树代表XML文档的全部内容,节点代表文档数据的结构单元,在学习XML的过程中清楚认识到XML文档就是一颗节点构成的树,而DOM就是在内存中构建XML的节点树,从而方便对XML文档的各种操作。
  • 20. 8.4.2 DOM解析示例之验证文档的有效性示例在本书的8.2小节中曾提及XML文档的有效型验证的问题,XML有效性的验证有很多方法,在MSXML分析器中提供了验证XML文档有效性的方法,只是在浏览器中默认是不验证XML文档的有效性的,在下面这个示例程序中,将调用MSXML的解析器对XML文档的有效性进行验证。(具体内容请参照书。)
  • 21. 8.4.3 DOM解析示例之动态创建节点示例在上面的实例程序中,只是对XML文档的有效性进行了验证,并没有设计DOM解析的实质内容,DOM最具标志性的操作就是对文档节点的控制,在下面这个示例程序中将介绍XML文档节点操作的方法,
  • 22. 8.4.4 DOM解析示例之操作XML文档节点属性示例在上面的示例程序中,分别展示了XML文档有效性的验证和动态创建XML文档节点,但是对于节点的操作仅仅限于节点的内容,在接下来的内容中将介绍XML文档属性的操作方法。(具体内容请参照书。)
  • 23. 8.5 XPATH节点表达式基础知识(具体内容请参照书。)
  • 24. 8.5.1 XPATH简介表达XML文档中节点集合可以用XPath语言来描述,XPath也是由W3C定义、用于在XML文档中描述部分节点集合的语言,这里的节点集合可以是单个节点、以某个节点为根的子树或者是节点与子树的集合,即XPath表达式就是节点和子树的集合。
  • 25. 8.5.2 XPATH语言中常用的简写符号在XPath中,有一些常用的简写符号,具体如下。 (1)“/”代表根节点,就是XML文档节点树的起始节点。 (2)“A/B”代表层次,即在XML文档节点树中,A节点是B节点的父节点。(具体内容请参照书。)
  • 26. 8.5.3 常用文档节点及其表达式在提取XML源文件内容的时候常用的节点是:文档根节点、元素节点、属性节点、和文本节点。为了方便定位这些元素,下面提供常用的文档节点以及器表达式。 (1)文档根节点 (2)文档元素节点 (3)元素属性节点
  • 27. 8.6 Java 解析XMLXML在Java中的地位是相当重要的,尤其在J2EE中,XML的身影更是随处可见,例如在每个J2EE应用项目中都需要有一个web.xml的配置文件,在Tomcat服务器中,几乎所有的配置文件都是XML格式的文档,而且在Web Services中间,XML的地位更显得重要。在接下来的内容中将介绍使用Java解析XML文档的技术。
  • 28. 8.6.1 Java处理XML概述在Java解析XML的时候,无论是使用JAXP还是使用第三方的解析器,都有两种解析方式:DOM方式解析和SAX方式解析。其中DOM方式解析就是在内存中构建整个XML文档的节点树,从而使对XML文档的操作变成对内存中结点树的操作。这种方式的优点是可以方便定位节点,缺点是需要把整个文档读入内存,然后才能构建起这个文档的结点树,如果XML文档比较大的时候就会增加系统的开销。
  • 29. 8.6.2 在JSP中生成XML文档在J2EE项目开发的过程中,经常会遇到生成XML文档的需要,使用Java生成XML文档有多种方法可供选择,可以使用JAXP或者是第三方的XML解析工具进行创建,或者使用Java输出字符串,按照XML的标准输出的字符串就是XML文档,在这里我们展示后一种XML文档的生成方法。(具体内容请参照书。)
  • 30. 8.6.3 使用JAXP按SAX方式解析XML文档JAXP也支持使用SAX的方式解析XML文档,在SAX方式的解析过程中,可以对节点的开始和结束事件进行监听和处理,在这个示例程序中,我们使用一个JavaBean来监听和处理XML的节点解析事件。(具体内容请参照书。)
  • 31. 8.6.4 使用JDom按DOM方式解析XML文档在上面的章节中介绍了使用Java语言自带的JAXP解析XML文档的具体方法,但是JAXP只是解析XML文档的一种简单的实现,在实际的解析过程中,某些场景下使用JAXP并不方便,这样就需要使用第三方提供的XML解析API,在这方面做的比较出色的有JDom、Dom4J、Xerces等,这些API的使用方法都很相似,在本章的以JDom为例进行介绍。(具体内容请参照书。)
  • 32. 8.6.5 使用JDom按SAX方式解析XML文档在JDom中对于SAX方式解析XML文档的功能支持相当优秀,大家都知道SAX方式解析XML文档的效率很高,但是节点操作不是很方便,在JDom中,使用SAX方式解析XML文档和使用DOM方式没有很大的区别,在SAX方式中,同样可以对节点进行操作,所以在实际的开发中,开发人员一般情况下会选择JDom的SAX解析方式。
  • 33. 8.7 小结在本章的内容中,简单介绍了XML的基本语法,对XML的显示技术进行了比较详细的介绍,介绍了三种比较常用的XML文档显示技术,XML文档的解析是XML学习中的重点,在本章中占了比较大的篇幅,其中详细介绍了使用Java解释XML的几种常用的技术,在学习完本章的知识以后,读者应该对XML的基本知识有一个清楚的认识,并尝试自己写程序来解析XML文档。在实践的基础上提升动手能力,同时加深对XML知识的理解。