搜档网
当前位置:搜档网 › 通过代码实例跟我学Java XML解析及应用——XML技术在J2EE Web应用系统中的应用示例

通过代码实例跟我学Java XML解析及应用——XML技术在J2EE Web应用系统中的应用示例

通过代码实例跟我学Java XML解析及应用——XML技术在J2EE Web应用系统中的应用示例
通过代码实例跟我学Java XML解析及应用——XML技术在J2EE Web应用系统中的应用示例

1.1通过代码实例跟我学Java XML解析及应用——XML技术在J2EE Web应用系统中的应用示例

1、相关的应用概述

(1)使用XML描述数据

JavaServer Pages ( JSP)和XML是Sun的J2EE的两个至关紧要的组件。JSP是用于创建服务器端应用程序的有效工具,而客户端可以是一个浏览器,一个设备或其它的应用程序。可以使用XML描述数据并在联系服务器与系统的其余部分之间传递。以便各种基于Web的应用之间能更方便的交换数据。

JSP可以被认为是实现技术而XML则是数据封装和消息传送技术。随着JA V A和XML 的不断发展,二者事实上已经发展成为可移植的语言和可移植的数据实现者。

(2)在JSP页面中可以通过三种方式使用XML

1) 直接使用XML文件

2) 使用JavaBeans来执行XML处理

3)通过标记库使用XML。

2、直接在JSP页面中使用XML

可以在JSP页面中直接使用XML,这要分为三种不同的情况:

(1)JSP可以读取XML文件并且基于这些数据执行动作。例如:一应用程序可以读取具有某些特定结构的数据的XML文件。

(2)JSP可以创建XML文件以发送数据到客户程序或其它的应用程序。

注意:xml文件存储数据与数据库的对比

1)对很多目前的用途来说,用数据库太过浪费了

2)xml文件很容易备份和共享,或下载到你的客户端。同样的,你可以方便地通过ftp

上载新的数据到你的站点。

3) xml还有一个更抽象的优点,即作为层次型的格式比关系型的更好。它可以用一

种很直接的方式来设计数据结构来符合你的需要。

(3)JSP可以转换XML文件,这个变换可以是交给XSLT处理,由JSP作为控制器,或者通过非XSLT解决方案来完成。在这两种情况下,JSP的作用都是读取XML文件,转换它并生成一个输出。

因为JSP包含内嵌的Java程序,所以它可以直接地调用一个分析程序来读/写xml数据。这是非常不合理的方法,因为数据和代码逻辑并不能很好的被分离开。另外,这样的程序也很难读得懂。所以,可以使用JavaBean。

3、使用JavaBean处理XML文件

JSP可以通过<jsp:usebean>标记与JavaBean紧密的整合起来。并对JavaBean 的属性进行操作。类XML的标记允许JSP页面访问JavaBeans。通过尽可能多的把封装的代码转变成可重用组件(JavaBeans),就可以把JSP页面中代码优化到最小的程度。

在单独的JavaBeans里与XML文件交互作用,并且你可以在不改动JSP页面的情况下改变JavaBean的程序。此外,JavaBeans还可以使用XSLT来执行XML文件的转换。

使用JSP和JavaBeans来完成的这些抽象的动作比直接在JSP页面中插入原始的Java程序要好得多,但是你仍然需要熟悉Java程序,以便随时改变JSP页面。应用程序的一致性与条理性依靠JavaBeans合作创建一个统一的输出结果的好坏程度。

例如,JavaBean中的缺陷可能会造成整个XML输出无效。依靠JavaBeans指定资源的方法,可能同时带来执行性能的问题。

4、在JSP中通过标记库与XML进行交互

通过标记库可以定义出现在JSP页面中的作为类XML元素的自定义标签,可以把特定的Java代码与每个标记都关联起来。例如,假定你可以访问一个天气情况数据库,而且你需要输出现在的天气状况。那么,你可以在JSP中插入JDBC程序代码直接查询数据库(虽然这并不是一个好的选择),把这些代码封装到一个JavaBean内,或者把它包装成一个标记库。

使用标记库时的JSP页面内的程序代码看上去就像:

<%@taglib uri="the TLD file" prefix="foo" %>

<foo:Weather>Current weather is <foo:Weather/>

注意在上述程序代码中看不到任何Java代码的踪迹。作为一个页面设计人员,你使用一种熟悉的语法就像<foo:weather/>,这些与其它的任何标记看起来非常相似。在页面中包含现在的天气状况的HTML字符串的地方插入它。

当使用标记库时,JSP页面看上去就非常像XML文件了。当JSP页面被处理时,引擎执行与标记相关联的程序代码(实际上,首先调用JSP引擎把JSP页面翻译成一个servlet,然后再编译servlet。与标记库相关联的方法都被包含在servlet中),一个熟悉XML的人就可以设计并使用各种各样的页面布局进行试验,而不必改变任何Java程序代码。当然,代码与数据的分离的程度还是主要依赖标记库元素设计的好坏程度。

5、使用 JSP技术生成动态 XML

通过使用 JSP 页面,页面内的静态 XML 数据就可以充当一个模板,该模板是用动态内容填充的。Java 代码的任务仅仅是生成可能随时间变化的内容 -- 这是一种更有效的方法。从而无须为每个请求重新生成静态内容是有意义的(假定 XML 文档只有部分内容是动态的)。

(1)对应的XMLOne.jsp文件

<%@ page contentType="text/xml;charset=GB2312" %>

<% java.util.Calendar cal = java.util.Calendar.getInstance(); %>

作者姓名

作者出世时间<% out.print(cal.getTime().toString()); %>

第一章

本章的标题

第一部分

副标题

本段的内容

<% cal.add(java.util.Calendar.MINUTE, 10);

out.print("出版时间为:" + cal.getTime().toString() + ""); %>

注意:

1)必须放在第一行。

因为在 XML 文档中,XML 版本标记必须位于第一行。

2)利用Java 代码不仅可以生成 XML 标记之间的数据,也可以生成一个 XML 文档中

的整个标记树。此时的Java代码除了要显示数据之外,还必须产生XML的标记。(2)对应的CSS文件为XMLOne.css

chapter {display:block}

introdution {display:block;color:blue}

chap_num {display:block;font-family:"Comic Sans MS";font-size:20;font-style:italic;font-weight:bolder;text-align:center;margin -top:2ex}

chap_title {display:block;font-family:"arial black";font-size:25;text-align:center}

part {display:block;margin-top:2ex}

part_num {font-family:"courier new";font-size:18;font-weight:bolder}

part_title {font-family:"courier new";font-size:20;font-weight:bolder}

para_1 {display:block}

(3)在浏览器中的执行后的结果为

(4)通过查看其源HTML代码是一个标准的XML格式的文件

6、用socket发送xml文档

把生成的xml文档转化成字符流,然后通过Socket输出到服务器端

Socket c = new Socket(host,port);

PrintWriter pw = new PrintWriter(new OutuputStreamWriter(c.getOutputStream()),true);

File f = new File(xmlFileName);

BufferedReader br = new BufferedReader(new FileReader(f)); String line;

while((line = br.readLine()) != null)

{

pw.println(line);

}

pw.close();

br.close();

Dom4j遍历解析XML测试

Dom4j遍历解析XML测试 近来老和XML打交道,不深挖不行了。。 这是一个Dom4j解析XML的例子,为做复杂递归处理前期所写的例子。涵盖了XML的解析方面大部分核心API。 环境: Dom4j-1.6.1 Dom4j解析需要XML需要的最小类库为: dom4j-1.6.1.jar jaxen-1.1-beta-6.jar 目标: 解析一个xml,输出所有的属性和元素值。 测试代码: XML文件: zhangsan 32 home add com add lisi 22 home add com add com add

解析代码: package com.topsoft.test; import org.dom4j.io.SAXReader; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.Node; import java.util.Iterator; import java.util.List; import java.io.InputStream; /** * Created by IntelliJ IDEA.
* User: leizhimin
* Date: 2008-3-26 15:53:51
* Note: Dom4j遍历解析XML测试 */ public class TestDom4j { /** * 获取指定xml文档的Docum ent对象,xml文件必须在classpath中可以找到 * * @param xmlFilePath xml文件路径 * @return Document对象 */ public static Docum ent parse2Document(String xmlFilePath) { SAXReader reader = new SAXReader(); Docum ent docum ent = null; try { InputStream in =TestDom4j.class.getResourceAsStream(xmlFilePath); docum ent =reader.read(in); } catch (Docum entException e) { System.out.println(e.getMessage()); System.out.println("读取classpath下xmlFileName文件发生异常,请检查CL ASSPATH和文件名是否存在!"); e.printStackTrace(); }

XML技术及其应用概述

XML技术及其应用概述* 吕腾黄琼湘闫萍 新疆大学数学与系统科学学院 830046 关键词: XML 电子商务网络安全数据集成 1 XML的发展历史 可扩展标记语言XML(eXtensible Markup Language)[1]是一种简单灵活的文本格式的可扩展标记语言,起源于SGML(Standard Generalized Markup Language),是SGML的一个子集合,也就是SGML的一个简化版本,非常适合于在Web上或者其它多种数据源间进行数据的交换。 1969年,IBM公司开发了一种文档描述语言GML(Generalized Markup Language),用来解决不同系统中文档格式不同的问题,并在1986年成为了一个国际标准〔ISO8879〕,这就是SGML。SGML是很多大型组织的文档标准,它是一种与语言无关的、结构化的、可扩展的语言,这些特点使它在很多公司受到欢迎,被用来创建、处理和发布大量的文本信息。 1989年,在CERN欧洲粒子物理研究中心的研究人员开发了基于SGML的超文本版本,称为HTML( HyperText Markup Language)。HTML继承了SGML的许多重要的特点,比如结构化、实现独立和可描述性,但是它也存在很多缺陷,比如它只能使用固定的有限的标记,而且它只侧重于对内容的显示方面。 随着Web上数据的增多,HTML存在的这些缺点越来越突出。W3C的成员认识到,必须有一种方法能够把数据本身和数据的显示分离开来,这样W3C在1996年提出了XML的概念。XML不仅保留了SGML的很多优点,而且更加容易操作以及在World Wide Web环境下实现。1998年,XML成了W3C的推荐标准。 2 XML的特点 (1)自描述。XML是一种标记语言,其内容由相应的标记来标识,具有自描述的特点。 (2)可扩展性。XML是一种可扩展的标记语言,用户可以定义自己的标记来表达自己的数据,具有强大的可扩展性。 (3)内容和显示分离。XML文档只描述数据本身,而与数据相关的显示则由另外的处理程序来完成,具有内容和显示相分离的特点。 (4)本地计算。XML解析器读取数据,并将它递交给本地应用程序(例如浏览器)进一步查看或处理,也可以由使用XML对象模型的脚本或其他编程语言来处理。 (5)个性化数据视图。传递到桌面的数据可以根据用户的喜好和配置等因素,以特定的形式在视图中动态表现给用户。 (6)数据集成。使用XML,可以描述和集成来自多种应用程序的不同格式的数据,使其能够传递给其它应用程序,做进一步的处理。 3 XML的技术规范 XML并不仅仅包括XML标记语言,它同时还包括了很多相关的规范,比如文档模式技术、文档样式技术、文档查询技术、文档解析技术、文档链接技术以及*新疆大学博士基金资助。

java_Dom4j解析XML详解

学习:Dom4j 1、DOM4J简介 DOM4J是https://www.sodocs.net/doc/5915063987.html, 出品的一个开源XML 解析包。DOM4J应用于Java 平台,采用了Java 集合框架并完全支持DOM,SAX 和JAXP。 DOM4J 使用起来非常简单。只要你了解基本的XML-DOM 模型,就能使用。 Dom:把整个文档作为一个对象。 DOM4J 最大的特色是使用大量的接口。它的主要接口都在org.dom4j里面定义:

接口之间的继承关系如下: interface https://www.sodocs.net/doc/5915063987.html,ng.Cloneable interface org.dom4j.Node interface org.dom4j.Attribute interface org.dom4j.Branch interface org.dom4j.Document interface org.dom4j.Element interface org.dom4j.CharacterData interface org.dom4j.CDATA interface https://www.sodocs.net/doc/5915063987.html,ment interface org.dom4j.Text interface org.dom4j.DocumentType interface org.dom4j.Entity interface org.dom4j.ProcessingInstruction 2、XML文档操作1 2.1、读取XML文档: 读写XML文档主要依赖于org.dom4j.io包,有DOMReader和SAXReader两种方式。因为利用了相同的接口,它们的调用方式是一样的。 public static Docum ent load(String filenam e) { Document docum ent =null; try { SAXReader saxReader = new SAXReader(); docum ent =saxReader.read(new File(filename)); //读取XML文件,获得docum ent 对象 } catch (Exception ex) { ex.printStackTrace();

基于XML技术标准的主题图构建及应用

基于XML技术标准的主题图构建及应用 【摘要】文章主要讨论了xml技术在信息组织领域的某一个方面应用,即xml用于主题图的实现,或称为xtm技术。它是使用xml语法来处理主题图中数据的一种方法。围绕该主题,文章介绍了xtm标准、使用xtm代码或使用集成开发工具这两种方法构建基于xml技术主题图,并列举了国内外使用基于xml技术实现主题图的应用案例。 【关键词】xml;主题图;xtm;信息组织 【abstract 】xml being applied to topic maps, a way of information organization, is generally called xtm. in the content, we introduce xtm standard, two ways of using xtm to construct topic maps and some examples of using topic maps based on xml to organize information. 【keywords 】xml; topic maps; xtm; information organization 1 引言 21世纪是信息时代,人们对信息的需求越来越多。但是,信息的量大质杂,与人们有限的时间精力、特定的信息需求存在极大的矛盾冲突。因此,对信息进行合理的组织,以方便用户获取信息的需求越来越迫切。数据是信息的载体,对信息的组织实质上是对数据的组织。主题图结构清晰并能够有效地反映数据间关联,因此主题图常被认为是信息组织的理想方法。如今有多种实现主题图的技术方法,如hytm等。但是,上述实现主题图的方法有一个难题:利用主题图组织的数据如何实现跨平台的数据交换?xml是现在流行

XML技术特点

XML技术及其应用概述* 吕腾黄琼湘闫萍新疆大学数学与系统科学学院830046 关键词:XML 电子商务网络安全数据集成 1 XML的发展历史可扩展标记语言XML(eXtensible Markup Language)[1]是一种简单灵活的文本格式的可扩展标记语言,起源于SGML(Standard Generalized Markup Language),是SGML的一个子集合,也就是SGML的一个简化版本,非常适合于在Web上或者其它多种数据源间进行数据的交换。1969年,IBM公司开发了一种文档描述语言GML(Generalized Markup Language),用来解决不同系统中文档格式不同的问题,并在1986年成为了一个国际标准〔ISO8879〕,这就是SGML。SGML是很多大型组织的文档标准,它是一种与语言无关的、结构化的、可扩展的语言,这些特点使它在很多公司受到欢迎,被用来创建、处理和发布大量的文本信息。1989年,在CERN欧洲粒子物理研究中心的研究人员开发了基于SGML的超文本版本,称为HTML( HyperText Markup Language)。HTML继承了SGML的许多重要的特点,比如结构化、实现独立和可描述性,但是它也存在很多缺陷,比如它只能使用固定的有限的标记,而且它只侧重于对内容的显示方面。随着Web上数据的增多,HTML存在的这些缺点越来越突出。W3C的成员认识到,必须有一种方法能够把数据本身和数据的显示分离开来,这样W3C在1996年提出了XML的概念。XML不仅保留了SGML的很多优点,而且更加容易操作以及在World Wide Web环境下实现。1998年,XML成了W3C的推荐标准。 2 XML的特点(1)自描述。XML是一种标记语言,其内容由相应的标记来标识,具有自描述的特点。(2)可扩展性。XML是一种可扩展的标记语言,用户可以定义自己的标记来表达自己的数据,具有强大的可扩展性。(3)内容和显示分离。XML文档只描述数据本身,而与数据相关的显示则由另外的处理程序来完成,具有内容和显示相分离的特点。(4)本地计算。XML 解析器读取数据,并将它递交给本地应用程序(例如浏览器)进一步查看或处理,也可以由使用XML对象模型的脚本或其他编程语言来处理。(5)个性化数据视图。传递到桌面的数据可以根据用户的喜好和配置等因素,以特定的形式在视图中动态表现给用户。(6)数据集成。使用XML,可以描述和集成来自多种应用程序的不同格式的数据,使其能够传递给其它应用程序,做进一步的处理。3 XML的技术规范XML并不仅仅包括XML标记语言,它同时还包括了很多相关的规范,比如文档模式技术、文档样式技术、文档查询技术、文档解析技术、文档链接技术以及* 新疆大学博士基金资助。XML技术及其应用概述·2·文档定位技术等。基于XML 的这些规范,还有很多高层的应用协议,比如SOAP(Simple Object Access Protocol)和BizTalk 等。(1)文档模式技术:DTD(Document Type Definition)[2]和XML Schema[3]是XML文档的模式,用来对XML文档的逻辑结构进行定义。XML文档的模式规定了XML文档中的元素、属性、元素和元素以及元素和属性之间的关系。其中,DTD来自SGML,XML Schema 是专门为定义XML文档的模式而设计的,采用的是XML的语法。(2)文档样式技术:XML是内容(数据)和显示格式分离的语言,CSS (Cascading Style Sheets)[4]和XSL(Extensible Stylesheet Language)[5]就是定义XML文档的显示样式的。其中,CSS是随着HTML的出现而产生的,控制XML文档的显示,但不会改变源文档的结构。而XSL是专门为XML设计的,不仅用来显示XML文档,而且可以把一个XML文档转化为另一个XML文档。(3)文档查询技术:W3C推荐的XML文档的查询语言是XQuery1.0[6]。XQuery起源于一种叫Quilt的XML查询语言,借鉴了XPath 1.0、XQL、XML-QL、SQL和OQL等语言的优点。(4)文档解析技术:文档解析是指对XML文档的内容和结构进行访问和分析。文档解析技术包括文档对象模型DOM(Document Object Model)[7]和SAX(Simple API for XML)[8]。DOM是一种对平台和语言中立的接口,它是基于XML文档在内存中的树状结构,它的一个主要不足在于将整个XML文档装入内存所引起的巨大开销。而SAX使用事件驱动的XML解析,并不要求将整个XML文档一起装入内存。(5)文档链接技术:XML的链接功能比HTML

XML的四种解析器(dom,sax,jdom,dom4j)原理及性能比较[收藏]

1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM 是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作。由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的。DOM以及广义的基于树的处理具有几个优点。首先,由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构作出更改。它还可以在任何时候在树中上下导航,而不是像SAX那样是一次性的处理。DOM使用起来也要简单得多。 2)SAX SAX处理的优点非常类似于流媒体的优点。分析能够立即开始,而不是等待所有的数据被处理。而且,由于应用程序只是在读取数据时检查数据,因此不需要将数据存储在内存中。这对于大型文档来说是个巨大的优点。事实上,应用程序甚至不必解析整个文档;它可以在某个条件得到满足时停止解析。一般来说,SAX还比它的替代者DOM快许多。 选择DOM还是选择SAX?对于需要自己编写代码来处理XML文档的开发人员来说,选择DOM还是SAX解析模型是一个非常重要的设计决策。DOM 采用建立树形结构的方式访问XML文档,而SAX采用的事件模型。 DOM解析器把XML文档转化为一个包含其内容的树,并可以对树进行遍历。用DOM解析模型的优点是编程容易,开发人员只需要调用建树的指令,然

后利用navigation APIs访问所需的树节点来完成任务。可以很容易的添加和修改树中的元素。然而由于使用DOM解析器的时候需要处理整个XML文档,所以对性能和内存的要求比较高,尤其是遇到很大的XML文件的时候。由于它的遍历能力,DOM解析器常用于XML文档需要频繁的改变的服务中。 SAX解析器采用了基于事件的模型,它在解析XML文档的时候可以触发一系列的事件,当发现给定的tag的时候,它可以激活一个回调方法,告诉该方法制定的标签已经找到。SAX对内存的要求通常会比较低,因为它让开发人员自己来决定所要处理的tag。特别是当开发人员只需要处理文档中所包含的部分数据时,SAX这种扩展能力得到了更好的体现。但用SAX解析器的时候编码工作会比较困难,而且很难同时访问同一个文档中的多处不同数据。 3)JDOM https://www.sodocs.net/doc/5915063987.html,/ JDOM的目的是成为Java特定文档模型,它简化与XML的交互并且比使用DOM实现更快。由于是第一个Java特定模型,JDOM一直得到大力推广和促进。正在考虑通过“Java规范请求JSR-102”将它最终用作“Java标准扩展”。从2000年初就已经开始了JDOM开发。 JDOM与DOM主要有两方面不同。首先,JDOM仅使用具体类而不使用接口。这在某些方面简化了API,但是也限制了灵活性。第二,API大量使用了Collections类,简化了那些已经熟悉这些类的Java开发者的使用。

XML应用与前景

XML基础 题目:XML应用及前景班级: 学号: 姓名:

时间:

XML基础 目录 1.XML简介 (1) 2.XML一般应用 (1) 2.1 XML把数据从HTML 分离 (1) 2.2 XML简化数据共享 (1) 2.3 XML 简化数据传输 (2) 2.4 XML 简化平台的变更 (2) 2.5 XML 使您的数据更有用 (2) 2.6 XML 用于创建新的 Internet 语言 (2) 2.7 XML在分布式技术的映射作用 (3) 3.XML应用前景 (3) 3.1电子商务领域 (3) 3.2网络服务领域 (4) 3.3 移动通信领域 (4) 3.4数据库领域 (5) 4.XML前景展望 (6)

XML应用及前景 1.XML简介 通过一学期的学习,我对XML有了一定的认识,其应用非常广泛,可以说是无处不在。在现如今的软件开发过程中,对于它的应用也体现在各个方面。它在未来软件开发中,应用空间会随着它的飞速发展不断地扩大,下面就其应用和发展前景作简要介绍。 作为互联网的新技术,XML的应用非常广泛,可以说XML已经渗透到了互联网的各个角落。 虽然人们对XML的某些技术标准尚有争议,但是人们已经普遍认识到XML的作用和巨大潜力,并将XML应用到互联网的各个方面。考察现在的XML应用,可以大致将它们分为:设计置标语言、数据交换、替代传统的EDI 、智能代理和精确搜索、Web应用、集成不同数据源、本地计算、数据的多种显示和网络出版、支持Web应用的互操作和集成、文件保值等。 2.XML一般应用 2.1 XML把数据从HTML 分离 如果你需要在HTML 文档中显示动态数据,那么每当数据改变时将花费大量的时间来编辑HTML。通过XML,数据能够存储在独立的XML 文件中。这样你就可以专注于使用HTML 进行布局和显示,并确保修改底层数据不再需要对HTML 进行任何的改变。通过使用几行 JavaScript,你就可以读取一个外部 XML 文件,然后更新HTML 中的数据内容。 2.2 XML简化数据共享 在真实的世界中,计算机系统和数据使用不兼容的格式来存储数据。XML 数据以纯文本格式进行存储,因此提供了一种独立于软

org.w3c.dom(java dom)解析XML文档

位于org.w3c.dom操作XML会比较简单,就是将XML看做是一颗树,DOM就是对这颗树的一个数据结构的描述,但对大型XML文件效果可能会不理想 首先来了解点Java DOM 的API: 1.解析器工厂类:DocumentBuilderFactory 创建的方法:DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 2.解析器:DocumentBuilder 创建方法:通过解析器工厂类来获得DocumentBuilder db = dbf.newDocumentBuilder(); 3.文档树模型Document 创建方法:a.通过xml文档 Document doc = db.parse("bean.xml"); b.将需要解析的xml文档转化为输入流InputStream is = new FileInputStream("bean.xml"); Document doc = db.parse(is); Document对象代表了一个XML文档的模型树,所有的其他Node都以一定的顺序包含在Document对象之内,排列成一个树状结构,以后对XML文档的所有操作都与解析器无关, 直接在这个Document对象上进行操作即可; 包含的方法:

4.节点列表类NodeList NodeList代表了一个包含一个或者多个Node的列表,根据操作可以将其简化的看做为数组 5.节点类Node

Node对象是DOM中最基本的对象,代表了文档树中的抽象节点。但在实际使用中很少会直接使用Node对象,而是使用Node对象的子对象Element,Attr,Text等 6.元素类Element 是Node类最主要的子对象,在元素中可以包含属性,因而Element中有存取其属性的方法

XML技术概述

XML技术概述 Internet技术发展至今,已渗透到社会生活的每个角落。近年来,随着电子商务、电子图书、远程教育等全新领域异军突起,迅速发展并逐渐成为Internet中不可缺少且愈发重要的组成部分,随之而来的是Web文件的智能化、多样化、复杂化,于是高信息量、高容量和高效率便成为网络信息传输技术发展的要求。而XML技术以具有高复杂性与灵活性,能应付复杂多变的具体应用而深受人们的喜爱。例如,XML可以方便的让同样的数据根据不同用户、不同需求而以不同的效果、形式表达再显示出来。 1.XML的定义 XML是互联网联盟W3C(World Wide Web Consortium)创建的一组规范,以便于软件开发人员和用户在网页上组织信息,其目的不仅在于满足不断增长的网络应用需要,同时还希望借此确保在通过网络进行交互作用时,具有良好的可靠性和互操作性。 与HTML一样,XML也源于SGML,它保留了SGML的大部分特性。尽管如此,XML却有着HTML语言所欠缺的丰富的可伸缩性与灵活性。XML不再像HTML 一样有着一成不变的固定标记。XML实际上是一种定义语言,即我们可以定义无限的标记来描述文件中的任何数据元素,从而突破了HTML固定标记集合的结束,使文件的内容更丰富、更复杂并组成一个信息结构。 XML语言可以让使用者根据需要自定义标记及属性名,也可以包含描述法,从而使XML文件结构可以复杂到任意程度。 XML主要有3个要素:Schema(模式)、XSL(eXtensible Stylesheet Language,可扩展样式语言)和XLL(eXtensible Link Language,可扩展链接语言)。Schema 定义了XML文件的逻辑结构,定义了XML文件中的元素、元素的属性以及元素和元素的属性之间的关系,它可以帮助XML分析程序检验XML文件标记的合法性;XSL是用于规定XML文档样式的语言,它能在客户端使浏览器改变文档的显示方式,从而不需要再与服务器进行交互通信;XLL则进一步扩展了目前Web上已有的简单链接。 2.与HTML的区别 XML是一种元素描述语言,并不像HTML一样使用一种固定的标记集合来描述固定的元素内容。在HTML语言中,如果用户所要的标记不在目前所使用标记语言的标记集合内,则只能期待在下一个版本中包含它。这通常使得文件的发展受限于标记语言提供能力。XML所提供的并不是一组已定义好的标记供我们使用,而是一种用来制定标记的规则。也就是说,使用XML可以创建自己所需的标记,而创建标记所要遵循的规范就是XML。由自己创建的标记也可以保存为一种文件,称为DTD(Document Type Definition),DTD记录的就是所定义文件的方法。

java读写xml文件的方法

在java环境下读取xml文件的方法主要有4种:DOM、SAX、JDOM、JAXB 1. DOM(Document Object Model) 此方法主要由W3C提供,它将xml文件全部读入内存中,然后将各个元素组成一棵数据树,以便快速的访问各个节点。因此非常消耗系统性能,对比较大的文档不适宜采用DOM方法来解析。 DOM API 直接沿袭了 XML 规范。每个结点都可以扩展的基于 Node 的接口,就多态性的观点来讲,它是优秀的,但是在Java 语言中的应用不方便,并且可读性不强。 实例: Java代码 1.import javax.xml.parsers.*; 2.//XML解析器接口 3.import org.w3c.dom.*; 4.//XML的DOM实现 5.import org.apache.crimson.tree.XmlDocument; 6.//写XML文件要用到 7.DocumentBuilderFactory factory = DocumentBuilderFactory.newInst ance(); 8. //允许名字空间 9. factory.setNamespaceAware(true); 10. //允许验证 11. factory.setValidating(true); 12. //获得DocumentBuilder的一个实例 13.try { 14. DocumentBuilder builder = factory.newDocumentBuilder(); 15.} catch (ParserConfigurationException pce) { 16.System.err.println(pce); 17.// 出异常时输出异常信息,然后退出,下同 18.System.exit(1); 19.} 20.//解析文档,并获得一个Document实例。 21.try { 22.Document doc = builder.parse(fileURI); 23.} catch (DOMException dom) { 24.System.err.println(dom.getMessage()); 25.System.exit(1); 26.} catch (IOException ioe) { 27.System.err.println(ioe); 28.System.exit(1); 29.}

使用DOM4j解析xml文件

Xml文件: studentname 78 78 98 studentname 77 68 88 JAVA文件: import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.Iterator; import java.util.List; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; /** *DOM4j对xml文件的操作 *操作DOM4j的时候注意要导入3个jar包,否则会报异常 *dom4j-1.6.1.jar *jaxen-1.1-beta-6.jar *saxpath.jar **/ public class ReaderDom4j {

Java解析XML文件

Java解析XML文件 ========================================== xml文件 <?xml version="1.0" encoding="GB2312"?> <RESULT> <VALUE> <NO>A1234</NO> <ADDR>四川省XX县XX镇XX路X段XX号</ADDR> </VALUE> <VALUE> <NO>B1234</NO> <ADDR>四川省XX市XX乡XX村XX组</ADDR> </VALUE> </RESULT> ========================================== 1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作。由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的。DOM以及广义的基于树的处理具有几个优点。首先,由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构作出更改。它还可以在任何时候在树中上下导航,而不是像SAX那样是一次性的处理。DOM使用起来也要简单得多。 import java.io.*; import java.util.*; import org.w3c.dom.*; import javax.xml.parsers.*; public class MyXMLReader{ public static void main(String arge[]){ long lasting =System.currentTimeMillis(); try{ File f=new File("data_10k.xml"); DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance(); DocumentBuilder builder=factory.newDocumentBuilder(); Document doc = builder.parse(f); NodeList nl = doc.getElementsByT agName("VALUE"); for (int i=0;i<nl.getLength();i++){ System.out.print("车牌号码:" +

XML技术与应用模拟题

《XML技术与应用》模拟题 一、选择题 1、下面关于XML、HTML和XHTML说法不正确的是() (A)HTML、XHTML和XML均是SGML的子集,均是为了克服SGML的复杂性而产生的元语言; (B)HTML、XHTML大小写不敏感;XML大小写敏感; (C)HTML可以不严格遵守语法规则,但XML必须严格遵守,它们的作用均是实现对元素的结构定义; (D)XHTML是对HTML的扩展,在大小写、标记的封闭性等方面更严格。 2、以下不是HTML的优点的是() (A)跨平台(B)强大的信息显示能力 (C)表达内容的真正含义,并且用预先定义的标记 (D)文档的编写简单 3、关于SGML的说法错误的是() (A)是一种通用的文档结构描述标记语言; (B)SGML功能非常强大,但不具有较好的扩展性,在数据分类和索引中非常有用;(C)SGML复杂度太高,开发成本高,不被主流浏览器所支持; (D)SGML是XML的父类。 4、下面关于CDATA节的说法不对是() (A)CDATA节的字符“”结束; (B)在节中可以输入包括<或&的任意字符; (C)CDATA节中的所有字符都会被当作元素中字符数据的常量部分,而不是XML标记;(D)CDATA段中可以再包含CDATA段,即可以嵌套。 5、下面关于属性的说法错误的是() (A)在一个元素的起始标签中,可以包含一个或多个属性; (B)属性由属性名、等号以及属性值组成。属性名可以由用户任意定义; (C)给元素添加属性是为元素提供信息的唯一方法; (D)属性值可以用单撇号或双撇号括起来。 6、XML中五个特殊符号为() (A)“<”、“&”、“>”、“’”、““”(B)“<”、“?”、“>”、“’”、““” (C)“<”、“&”、“>”、“’”、“”(D)“<”、“&”、“>”、“_”、““” 7、下面对DTD元素声明不正确的是() (A) (B) (C) (D)

java dom解析xml

java dom解析xml 010000 00000CC3 20100629173405 1 000001 import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; public class FileTest { /** * @param args */ public static void main(String[] args) { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); try { DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse("d:/test.xml"); //得到根节点 Element root = doc.getDocumentElement(); NodeList nl = root.getElementsByTagName("HLR"); Element e = (Element) nl.item(0); String hlrId=e.getAttribute("HlrId"); System.out.println(hlrId); }catch(Exception e){

java解析XML详解

详解Java解析XML的四种方法 XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便。对于XML本身的语法知识与技术细节,需要阅读相关的技术文献,这里面包括的内容有DOM(Document Object Model),DTD(Document Type Definition),SAX(Simple API for XML),XSD(Xml Schema Definition),XSLT(Extensible Stylesheet Language Transformations),具体可参阅w3c官方网站文档https://www.sodocs.net/doc/5915063987.html,获取更多信息。 XML在不同的语言里解析方式都是一样的,只不过实现的语法不同而已。基本的解析方式有两种,一种叫SAX,另一种叫DOM。SAX是基于事件流的解析,DOM是基于XML文档树结构的解析。假设我们XML的内容和结构如下: ddviplinux m 30 本文使用JAVA语言来实现DOM与SAX的XML文档生成与解析。 首先定义一个操作XML文档的接口XmlDocument 它定义了XML文档的建立与解析的接口。 package com.alisoft.facepay.framework.bean; /** * * @author hongliang.dinghl * 定义XML文档建立与解析的接口 */ public interface XmlDocument { /** * 建立XML文档 * @param fileName 文件全路径名称 */ public void createXml(String fileName); /** * 解析XML文档 * @param fileName 文件全路径名称 */ public void parserXml(String fileName); } 1. DOM生成和解析XML文档 为 XML 文档的已解析版本定义了一组接口。解析器读入整个文档,然后构建一个驻留内存的树结构,然后代码就可以使用 DOM 接口来操作这个树结构。优点:整个文档树在内存中,便于操作;支持删除、修改、重新排列等多种功能;缺点:将整个文档调入内存(包括无用的节点),浪费时间和空间;使用场合:一旦解析了文档还需多次访问这些数据;硬件资源充足(内存、CPU)。 import java.io.FileInputStream; import java.io.FileNotFoundException;

java 解析xml 并导入数据库(dom4j )

java 解析xml 并导入数据库(dom4j ) import java.io.File; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.Iterator; import java.util.List; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; public class TestXMLImport { /** * @param args */ public static void main(String[] args) { String sql = "insert into T_XML(NUMERO, REPOSICION, NOMBRE, TURNOS) values (?, ?, ?, ?)"; Connection conn = null; PreparedStatement pstmt = null; try {

conn = DbUtil.getConnection(); pstmt = conn.prepareStatement(sql); Document doc = new SAXReader().read(new File("D:/share/JavaProjects/drp/test_xmlImport/xml/test01.XML ")); List itemList = doc.selectNodes("/ACCESOS/item/SOCIO"); for (Iterator iter=itemList.iterator(); iter.hasNext();) { Element el = (Element)iter.next(); String numero = el.elementText("NUMERO"); String reposicion = el.elementText("REPOSICION"); String nombre = el.elementText("NOMBRE"); List turnosList = el.elements("TURNOS"); StringBuffer sbString = new StringBuffer(); for (Iterator iter1=turnosList.iterator(); iter1.hasNext();) { Element turnosElt = (Element)iter1.next(); String lu = turnosElt.elementText("LU"); String ma = turnosElt.elementText("MA"); String mi = turnosElt.elementText("MI"); String ju = turnosElt.elementText("JU"); String vi = turnosElt.elementText("VI"); String sa = turnosElt.elementText("SA");

相关主题