西南科技大学网络教育系列课程 动态网页设计(JSP) 补充 JSP操作XML文件
可扩展标记语言(eXtensible Markup Language,XML)是目前应用开发领域中的热门技术。 内容提要 可扩展标记语言(eXtensible Markup Language,XML)是目前应用开发领域中的热门技术。 本讲介绍: XML基本概念, XML的三种显示样式: CSS(Cascading Style Sheet,层叠式样式表单) XSL(Extensible Style Language,扩展的标记语言) Data Island(数据岛) 如何利用JSP操作XML文件。
XML的概念 XML即可扩展的标记语言,可以定义语义标记(标签),是元标记语言。XML不像超文本标记语言HTML,HTML只能使用规定的标记,对于XML,用户可以定义自己需要的标记。 XML(eXtensible Markup Language)和HTML(Hyper Text Markup Language)师出同门,都是从SGML(Standard Generalized Markup Language)延伸而出的标记语言
XML文档的结构 <BOOK> <TITLE>三国演义</TITLE> <?xml version="1.0" encoding="gb2312"?> <INVENTORY> <BOOK> <TITLE>三国演义</TITLE> <AUTHOR>罗贯中</AUTHOR> <PAGES>1100</PAGES> <PRICE>¥125</PRICE> </BOOK> </INVENTORY>
使用属性 <?xml version="1.0" encoding="gb2312"?> <老师记录> <姓名 类别="专职">周润发</姓名> <住址>北京大学</住址> <职位>计算机系教师</职位> <工资 货币="美元">2000</工资> </老师记录>
XML声明 XML声明是以“<?xml”开始的,前面的XML文件的声明为: <?xml version="1.0" encoding="gb2312"?> XML声明的作用是告诉浏览器将要处理的文档是XML文件。一个XML文档最好是以一个XML声明作为开始。 XML声明在XML文档中是可选内容,但XML标准强烈推荐加入这一行声明。XML声明中可以包含version,encoding和standalone三个属性。
字符和实体引用 (1)字符不能直接出现在文档中,因为它们会被解释为标记。 (2)由于输入设备的限制,字符不能直接输入到文档中。 字符和实体引用可以向XML文档中引入其他信息,而不需要直接在文档中输入它们。字符和实体引用通常用于以下情况。 (1)字符不能直接出现在文档中,因为它们会被解释为标记。 (2)由于输入设备的限制,字符不能直接输入到文档中。 (3)由于单字节字符的限制,字符不能可靠地经过处理程序。 (4)相同的字符串或文档片断在文档中多次使用。
XML常用的实体引用 实 体 实 体 引 用 意 义 lt < <(小于) gt > >(大于) amp & 实 体 实 体 引 用 意 义 lt < <(小于) gt > >(大于) amp & &(和) apos ' ‘(单引号) quot " “(双引号)
使用特殊字符 <?xml version="1.0" encoding="gb2312"?> <INVENTORY> <BOOK> <TITLE><三国演义></TITLE> <AUTHOR>罗贯中</AUTHOR> <PAGES>1100</PAGES> <PRICE>¥125</PRICE> </BOOK> </INVENTORY>
XML的三种显示格式 显示XML文件常见的有三种方式: 使用CSS样式表 使用XSL样式单 使用XML的数据岛技术
CSS样式表 案例名称:CSS样式表 程序名称:1.css GREETING { font-size: 48pt; font-weight: bold; } 案例名称:调用CSS的XML文件 程序名称:3.xml <?xml version="1.0" encoding="GBK"?> <?xml-stylesheet type="text/css" href="9-06.css"?> <GREETING> China </GREETING>
XSL样式语言 案例名称:调用XSL的XML文件 程序名称:01.xml 案例名称:XSL文件 程序名称:2.xsl
XML数据岛技术 案例名称:使用XML文件数据岛 程序名称:1.htm 拆分 2.htm 4.xml
XML的两种语法规则 在XML文档规则方面,目前有两种: W3C的DTD技术 微软公司Schema技术
DTD文档类型定义 内部DTD 5.xml 用msxml.exe检查 6.xml 为文档类型定义(Document Type Definition),简称DTD。DTD可以包含在XML文档中,也可以独立为一个文件。根据DTD定义的位置,可以分成内部DTD和外部DTD 内部DTD 5.xml 用msxml.exe检查 6.xml
外部DTD 案例名称:外部DTD 程序名称:1.DTD 案例名称:外部DTD 程序名称:7.xml
Schema文档规则 文档检验 案例名称:使用Schema 程序名称:8.xml <?xml version="1.0"?> <Schema xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes"> <ElementType name="books"> <element type="book"/> </ElementType> <ElementType name="book" dt:type="int"/> </Schema> 案例名称:使用Schema 程序名称:9.xml <?xml version="1.0"?> <books xmlns="x-schema:8.xml"> <book>hello</book> </books> 文档检验
基于DOM(Document Object Model)的解析接口 基于SAX(Simple API for XML)的解析接口 在Java中对XML的解析接口有3大类: 基于DOM(Document Object Model)的解析接口 基于SAX(Simple API for XML)的解析接口 基于JDOM(Java Document Object Model)技术的解析接口
解析接口 JDOM的处理方式是与DOM类似的操作。是SUN公司发布的一种简单方便的XML处理接口。 DOM即文档对象模型。在应用程序中,基于DOM的XML分析器将一个XML文档转换成了一个对象模型的集合(这个集合通常被称为DOM树),应用程序可以通过对该对象模型的操作,实现对XML文档中数据的操作。 SAX即XML简单应用程序接口。SAX提供了一种对XML文档进行顺序访问的模式,这是一种快速读写XML数据的方式。当使用SAX分析器对XML文档进行分析时,会触发一系列事件,并激活相应的事件处理函数,从而完成对XML文档的访问,所以SAX接口也被称作事件驱动接口。 JDOM的处理方式是与DOM类似的操作。是SUN公司发布的一种简单方便的XML处理接口。
解析器 解析器实际上就是一段代码,它读入一个XML文档并分析其结构。我们在这里介绍的是基于Java的解析器。 目前主流的解析器有:JAXP(Java API for XML Processing)、Xerces(Apache)、XML4J(IBM)和xalan等,主流的解析器都支持SAX和DOM。支持JDOM的解析器目前只有SUN公司发布的jdom包。
DOM解析接口 案例名称:DOM树结构 程序名称:10.xml <?xml version="1.0" encoding="gb2312" ?> <addressbook> <person sex = "male"> <name>张三</name> <email>zhs@xml.net.cn</email> </person> <name>李四</name> <email>ls@xml.net.cn</email> </addressbook>
DOM读取XML文件 建立一个解析器工厂。 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 以利用这个工厂来获得一个具体的解析器对象。 DocumentBuilder builder=dbf.newDocumentBuilder(); 利用DocumentBuilder的parse()方法接受一个XML文档名作为输入参数,返回一个Document对象。Document对象代表了一个XML文档的树模型。 Document doc=builder.parse("candidate.xml");
DOM读取XML文件 使用Document对象的getElementsByTagName()方法,得到一个NodeList对象,它是XML文档中的标签元素列表,可以使用NodeList对象的item()方法来得到列表中的每一个Node对象。 NodeList nl =doc.getElementsByTagName("PERSON"); Element node=(Element) nl.item(i); 通过Node对象的getNodeValue()方法提取某个标签内的内容。 node.getElementsByTagName("NAME").item(0).getFirstChild().getNodeValue()
案例名称:JSP使用DOM读取XML文件
SAX解析接口 SAX是一种轻量型的方法。在处理DOM的时候,需要读入整个的XML文档,然后在内存中创建DOM树,生成DOM树上的每个Node对象。 DOM的缺陷
SAX读取XML文件 SAX解析器工作的过程至少包含3步。 第一步:和DOM一样,需要建立一个解析器工厂。 SAXParserFactory spf = SAXParserFactory.newInstance(); 第二步,创建一个解析器对象。 SAXParser saxParser = spf.newSAXParser(); 第三步,将解析器和XML文档联系起来,开始解析。 saxParser.parse(new File(filename),new sax());
JDOM解析接口 “JDOM Makes XML Easy” JDOM的jar文件:jdom.jar。
JDOM对象 JDOM的处理方式有些类似于DOM,但它主要是用SAX实现的,不必担心处理速度和内存的问题。 另外,JDOM中几乎没有接口,全部是类,主要的类有: Attribute(属性)、CDATA(内容)、Comment(注释)、Document(文档)、Element(元素)Namespace(命名空间)、ProcessingInstruction(处理指令)和Text(文本)
使用JDOM读取XML文件 案例名称:使用JDOM读取XML文件 程序名称:2.jsp
使用JDOM读取XML字符串 使用JDOM读取XML字符串 3.jsp 使用JDOM读取XML的属性 4.jsp