`
happyjyj
  • 浏览: 9646 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类

JAVA中的XML处理(一) 通过JAXP操作XML

    博客分类:
  • XML
阅读更多

1.JAVA处理XML的文件接口

    对XML数据文件操作的接口,目前存在2类标准:DOM & SAX。DOM将xml数据文件作为整体来处理,SAX将XML作为数据流来处理。

    除上述2类标准外还有很多非标准的XML操作接口:JDOM、DOM4J等。这些接口或模块与标准的DOM不兼容,但由于其易用性,在java开发群体中有着十分广泛的应用。

 

1.1 DOM标准

    DOM是一种操作XML数据文件最广泛的标准,独立于特定的语言和平台。很多XML解析器都实现DOM接口标准。DOM标准最基本的思想是将整个XML数据文件载入内存,将其解析成一颗树形对象。因而基于DOM的处理器内存要求比较高,但速度较快。

    DOM标准由W3C负责维持,http://www.w3c.org网上有最新的DOM标准规范文件。

1.2 SAX标准

    该标准是读一部分数据,再处理一部分数据。该接口通常是基于时间的,其将XML数据文件中不同的内容归类为不同对象。当SAX处理器分析到不同的对象时,就产生不同的事件,进而调用不同的事件处理器。

 

1.3 JAXP规范

    JAXP是SUN公司提出的一种JAVA操作XML的 标准。JAXP的作用是在JAVA应用程序和具体解析器之间提供一个统一编程接口,从而提高JAVA应用程序的可移植性。JAXP只是规范了JAVA应用程序获取DOM或SAX接口的方式,规范了JAVA应用程序加载XML解析器的方式。JAXP本身只是一个JAVA的接口框架。

 

2、使用JAXP操作XML

2.1 通过JAXP以DOM方式操作XML

import org.w3c.dom.*;
import org.xml.sax.*;
import javax.xml.parsers.*;
import java.io.*;

public class Test {
	public static void main(String args[]) {
		try{
			String path = "xml";
			DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
			//使不支持合法性验证


			domFactory.setValidating(false);
			//使支持名称空间
			domFactory.setNamespaceAware(true);

			//新建DocumentBuilder 对象
			DocumentBuilder domBuilder = domFactory.newDocumentBuilder();
			
			//通过DocumentBuilder 对象将XML解析成一个DOM的Document对象
			Document document = domBuilder.parse(new File(path));
			//获得第一个子节点(此处为根节点)
			Node mynode = document.getFirstChild();
			int nodeType = mynode.getNodeType();
			
			String nodeName = mynode.getNodeName();
			String nodeValue = mynode.getNodeValue();
			System.out.println(nodeType);
			System.out.println(nodeName);
			System.out.println(nodeValue);
		}catch(Exception ex){
			ex.printStackTrace();
		}
	}

}

 

   以上使用的是JDK自带的Xerces解析器,作为结果程序中没有任何和Xerces相关的代码,这是JAXP模块的最大的优点----隐藏了具体XML解析器的调用细节,使用户代码独立于特定的解析器,并可以在不同的解析器之间进行切换。

 

2.2 通过JAXP以SAX方式操作XML

 import java.io.IOException;
  import javax.xml.parsers.*;
  import org.xml.sax.Attributes;
  import org.xml.sax.SAXException;
  import org.xml.sax.helpers.DefaultHandler;
  /**
  *
  * date 12008-12-16
  * SAX解析XML文件
  * 优点,简单
  *
  */
  public class SAXtoMyxml {
  public static void main(String[] args) throws ParserConfigurationException,
  SAXException, IOException {
  // 通过工厂获得SAX解析器
  SAXParserFactory sf = SAXParserFactory.newInstance();
  SAXParser sax = sf.newSAXParser();
  //解析器
  // 通过解析器解析xml文件
  sax.parse("myxml1.xml", new SAXHander()); //使用自定义的监听器
  }
  }
  // 自定义sax解析监听器
  class SAXHander extends DefaultHandler {
  public void startDocument() throws SAXException {
  System.out.println("文档开始 ");
  }
  public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
  System.out.println("元素开始 "+qName);
  }
  public void characters(char[] ch, int start, int length) throws SAXException {
  String text = new String(ch,start,length);
  //去掉xml文件中的空格节点
  if(text.trim().equals("")) {
  return;
  }
  System.out.println("文本内容 "+text);
  }
  public void endElement(String uri, String localName, String qName) throws SAXException {
  System.out.println("元素结束 "+qName);
  }
  public void endDocument() throws SAXException {
  System.out.println("文档结束 ");
  }
  } 

 

 

   

0
0
分享到:
评论

相关推荐

    Java and XML, 3rd Edition

    《Java与XML》(第三版)的内容涵盖了所有主要的Java XML处理库程序,全面讲解了SAX、DOM、StAX、JDOM以及dom4j的应用程序编程接口,同时还囊括了最新版本的用于XML处理的Java应用程序编程接口(JAXP)和用于XML绑定...

    XML_JAVA指南.rar_WORKING_java Tutorial_java xml_jaxp_xml

    Working with XML The Java API for Xml Parsing (JAXP) Tutorial

    JSR 206 Java API for XML Processing (JAXP) 1.3

    JSR 206 Java API for XML Processing (JAXP) 1.3

    使用Java读取XML配置文件

    使用 Java 读取 XML 配置文件 Java 语言和 XML 技术可以说是黄金组合,网上已经有很多文章介绍 XML 在电子商务中的数据交换的作用。但是在平时系统开发中,我们不一定都用到数据交换,是否无法使用 XML?当然不是...

    Java解析XML文件的DOM和SAX方式.doc

    在 Java 中使用 DOM 方式解析 XML 文件需要使用 JAXP(Java API for XML Processing),首先需要创建一个解析器工厂,然后使用工厂创建一个具体的解析器对象。然后,使用解析器对象来解析 XML 文件,得到一个 ...

    JAVA与XML.rar

    《Java与XML》(第三版)的内容涵盖了所有主要的Java XML处理库程序,全面讲解了SAX、DOM、StAX、JDOM以及dom4j的应用程序编程接口,同时还囊括了最新版本的用于XML处理的Java应用程序编程接口(JAXP)和用于XML绑定...

    Java and XML(英文第三版)

    including full coverage of the SAX, DOM, StAX, JDOM, and dom4j APIs as well as the latest version of the Java API for XML Processing (JAXP) and Java Architecture for XML Binding (JAXB). The chapters ...

    Java中四种XML解析技术

    因此,在 Java 中解析 XML 文件是一个非常重要的任务。目前,Java 中有多种 XML 解析技术,但哪一种最适合我们呢?在这篇文章中,我们将对 Java 中四种主流的 XML 解析技术进行比较和分析。 一、 DOM(JAXP Crimson...

    使用JAXP处理XML文件.pdf

    JAXP是JAVA API for XML Processing的缩写。本教程属于清晰版

    JAXP 专述――Sun 的 Java API for XML 语法分析

    供学习java xml参考

    XML和JSP交互技术

    一个很实用的技术就是如何将XML和JSP结合起来,所幸的是我们不用去写底支持层东西了,因为很多厂商如SUN、IBM...这部分API提供了基本的读写、操作XML文档的功能,通过它我们可以很方便的将XML集成到Java应用程序中来。

    java解析xml文档的常用方法

    JDOM(Java Document Object Model)是一种 Java 库,用于解析和操作 XML 文档。它提供了一个简单的 API,用于读取和写入 XML 文档。使用 JDOM 需要 import 相应的包,例如 `import org.jdom.*;`。然后,创建一个 `...

    java解析xml及4种常用解析比较

    它还可以在任何时候在树中上下导航,而不是像SAX那样是一次性的处理。DOM使用起来也要简单得多。 2)SAX SAX处理的优点非常类似于流媒体的优点。分析能够立即开始,而不是等待所有的数据被处理。而且,由于应用...

    J2EE中XML配置文件的读取处理

    Java程序的配置文件都开始使用XML格式,以前是使用类似windows的INI格式(Java中也有 Propertiesy这样的类专门处理这样的属性配置文件)。使用XML作为Java的配置文件有很多好处,从Tomcat的安装配置文件和J2ee的配置...

    Java中关于XML的API

    本文简单介绍了Java中关于XML的API,主要包括JAXP、JAXB、JAXM、JAX-RPC,并指导读者通过JAXP框架查找具体实现的步骤。

    java语言与XML教程

    这部书是理解java、与XML、处理的利器,用在服务器web端的学习

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    10.2.1 在try-catch语句中处理异常 343 10.2.2 使用requestdispatcher来处理异常 346 10.3 小结 349 第11章 开发线程安全的servlet 350 11.1 多线程的servlet模型 350 11.2 线程安全的servlet 351 11.2.1 变量...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    10.2.1 在try-catch语句中处理异常 343 10.2.2 使用requestdispatcher来处理异常 346 10.3 小结 349 第11章 开发线程安全的servlet 350 11.1 多线程的servlet模型 350 11.2 线程安全的servlet 351 11.2.1 变量...

    经典的DOM解析XML范例

    用Java解析XML文档,最常用的有两种方法:使用基于事件的XML简单API(Simple API for XML)...Sun公司提供了Java API for XML Parsing(JAXP)接口来使用SAX和DOM,通过JAXP,我们可以使用任何与JAXP兼容的XML解析器

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    10.2.1 在try-catch语句中处理异常 343 10.2.2 使用requestdispatcher来处理异常 346 10.3 小结 349 第11章 开发线程安全的servlet 350 11.1 多线程的servlet模型 350 11.2 线程安全的servlet 351 11.2.1 变量...

Global site tag (gtag.js) - Google Analytics