`

Java之XML解析的两种方法介绍

阅读更多
Java XML Parsing

解析XML有两种(不限于)方法: 一种是基于DOM(Document Object Model)的解析,一种是基于事件(event-based)的SAX(Sample API for XML)解析。

DOM    
-Tree model parser(Object based) (Tree of nodes).
-DOM 加载所有XML到内存,然后解析。因此具有内存限制。
-DOM 可以对XML进行读写操作。
-DOM 适宜于小型的XML。
-可以对节点进行前后检索。
-运行速度慢
-JDK 7 内置

SAX
-Event based parser (Sequence of events).
-SAX 按节点,一边读一边解析。因此没有内存限制。
-SAX 只能对XML进行读操作。
-SAX 可以解析大型的XML。
-SAX 从文件头读到文件尾,不可向后检索。
-运行速度快
-需要引用第三方包:jdom


示例:

XML(text.xml)

<?xml version="1.0"?>
<class>
   <student rollno="393">
      <firstname>dinkar</firstname>
      <lastname>kad</lastname>
      <nickname>dinkar</nickname>
      <marks>85</marks>
   </student>
   <student rollno="493">
      <firstname>Vaneet</firstname>
      <lastname>Gupta</lastname>
      <nickname>vinni</nickname>
      <marks>95</marks>
   </student>
   <student rollno="593">
      <firstname>jasvir</firstname>
      <lastname>singn</lastname>
      <nickname>jazz</nickname>
      <marks>90</marks>
   </student>
</class>




DOM 解析
package com.gentleman.util.xml;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class DOMParser {
	
	public static void main(String[] args) throws Exception {
		
		DocumentBuilderFactory documentBuilderFactory 
			= DocumentBuilderFactory.newInstance();
		DocumentBuilder documentBuilder 
			= documentBuilderFactory.newDocumentBuilder();	
		Document document = documentBuilder.parse(
				DOMParser.class.getClassLoader().getResourceAsStream("test.xml"));
	
		document.getDocumentElement().normalize();
        
        System.out.println("Root Element : " +
        		document.getDocumentElement().getNodeName());
        System.out.println("----------------------------");
        
        NodeList nList = document.getElementsByTagName("student");        
        for (int temp = 0; temp < nList.getLength(); temp++) {
           Node node = nList.item(temp); 
           Element element = (Element) node;
           
           System.out.println(element.getNodeName() + " : " + 
        		   			  element.getAttribute("rollno"));
           System.out.println("First Name : " + getText(element, "firstname"));              
           System.out.println("Last Name : " +  getText(element, "lastname"));              
           System.out.println("Nick Name : "  +  getText(element, "nickname"));              
           System.out.println("Marks : "  +  getText(element, "marks"));
           System.out.println("\n");
        }

	}//end main().
	
	private static String getText(Element element, String tag){
		return element
                .getElementsByTagName(tag)
                .item(0)  // get the first element of the tag name.
                .getTextContent();
	}
}







SAX解析


package com.gentleman.util.xml;

import java.util.List;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;

public class SAXParser {

	public static void main(String[] args) throws Exception {
		SAXBuilder sb = new SAXBuilder();
		Document doc = sb.build(SAXParser.class.getClassLoader()
				.getResourceAsStream("test.xml"));
		Element root = doc.getRootElement();
		List list = root.getChildren("student");

		for (int i = 0; i < list.size(); i++) {
			Element element = (Element) list.get(i);

			String rollno = element.getAttributeValue("rollno");

			String firstname = element.getChildText("firstname");
			String lastname = element.getChildTextTrim("lastname");
			String nickname = element.getChild("nickname").getText();
			String marks = element.getChild("marks").getTextTrim();

			System.out.println("Student: " + rollno);
			System.out.println("---------------------------");
			System.out.println("firstname: " + firstname);
			System.out.println("lastname : " + lastname);
			System.out.println("nickname : " + nickname);
			System.out.println("marks    : " + marks);
			System.out.println("\n");

		}
	}
}










引用:
http://stackoverflow.com/a/19154095/2893073
https://docs.oracle.com/cd/B28359_01/appdev.111/b28394/adx_j_parser.htm#BGBGAJIA
https://docs.oracle.com/javase/tutorial/jaxp/dom/readingXML.html






-
转载请注明
原文出处:http://lixh1986.iteye.com/blog/2328760

-








-
分享到:
评论

相关推荐

    java 解析xml 多级

    首先,Java提供了两种主要的API来处理XML:DOM(文档对象模型)和SAX(简单API for XML)。DOM解析器会将整个XML文件加载到内存中,形成一个树形结构,适合处理小到中等规模的XML文档。而SAX解析器采用事件驱动的...

    XML学习笔记(包括Java的两种解析XML的方法)

    XML学习笔记(包括Java的两种解析XML的方法)。 XML基础语法的介绍,DTD的介绍和使用。 可快速入门,也可当手册使用。

    java xml文件解析

    DOM4J是一个基于Java的高效XML解析库,它是对DOM和SAX API的一个简单而强大的封装。DOM4J提供了更简洁的API,使得XML的解析和操作更加容易。DOM4J已成为XML解析的一种流行选择。 ### 性能对比 不同解析方式之间的...

    java Stax 解析xml

    Java提供了多种解析XML的技术,包括DOM(Document Object Model)、SAX(Simple API for XML)以及本文将详细介绍的StAX(Streaming API for XML)。StAX是一种基于事件驱动的API,适用于大量或流式XML数据的处理。 ...

    java在线解析xml

    Java在线解析XML是一种常见的编程任务,特别是在处理Web服务...在处理sinaApps这样的数据时,可能涉及从XML响应中提取应用信息,如应用ID、名称、描述等,这时可以利用这些解析方法将XML数据转化为易于处理的Java对象。

    详 解Java解析XML

    Java 解析 XML 主要涉及两种主流方法:DOM(Document Object Model)和 SAX(Simple API for XML),以及另外两种更现代的技术:StAX(Streaming API for XML)和JAXB(Java Architecture for XML Binding)。...

    Java_XML生成与解析的四种方法

    在Java中,XML的处理主要包括生成和解析两个方面,而解析又可以进一步细分为DOM和SAX两种主要方式。此外,还有基于StAX(Streaming API for XML)和JAXB(Java Architecture for XML Binding)的方式。 #### 二、...

    java解析xml包

    本主题将深入探讨Java中常用的两种XML解析库:DOM4J和JDOM。 首先,我们来看DOM4J。DOM4J是一个灵活且功能强大的Java XML API,它基于DOM(Document Object Model)模型,但提供了更多的高级特性,如XPath支持和XML...

    java_dom解析xml xml java

    DOM解析是Java中一种常用的处理XML文档的方式。它将整个文档加载到内存中,并通过DOM树的形式提供对文档内容的访问。这种方式适用于需要频繁访问和修改XML文档的应用场景。上述示例代码展示了如何使用DOM解析器加载...

    详解Java解析XML的四种方法

    除了上述两种常见的方法外,还有两种方法用于解析XML: 1. **StAX(Streaming API for XML)**:这是一种非阻塞、基于事件的流式API,适合于处理大型XML文档。StAX结合了SAX和DOM的优点,提供了更高效的解析机制。 ...

    Java解析XML.zip

    Java是一种广泛使用的编程语言,尤其在企业级应用和Web服务中。XML(eXtensible Markup Language)作为数据交换和存储的标准格式,被广泛应用在各种系统间的数据传输。当需要在Java程序中处理XML文件时,Java提供了...

    Java解析XML的四种方法.pdf

    JDOM是一种专门为Java设计的XML解析库,它不是Java标准库的一部分,但因为其简洁的API而受到许多开发者的欢迎。JDOM提供了`SAXBuilder`、`Document`、`Element`等类来简化XML文档的处理。与DOM不同,JDOM更注重简化...

    Java解析xml所需jar包

    在Java编程环境中,XML(可扩展标记语言)是一种常见的数据交换格式,用于存储和传输结构化数据。为了在Java中解析XML文档,开发者通常需要引入特定的库或框架。在这个场景中,提到的两个关键库是`dom4j`和`jdom`,...

    Java解析XML的方法

    除了上述两种基本方法外,Java还提供了另外两种常用的解析方法:StAX(Streaming API for XML)和JDOM(Java Documentation Object Model)。 ##### 3. StAX解析 StAX是一种流式的XML解析方式,它结合了SAX和DOM的...

    java解析xml实例

    本篇将深入探讨两种主要的XML解析技术:DOM(Document Object Model)和SAX(Simple API for XML)。 DOM解析器将整个XML文档加载到内存中,构建一个树形结构,允许开发者通过节点遍历、查找和修改XML内容。这种...

    java 使用JDOM解析xml文件.docx

    Java 使用 JDOM 解析 XML 文件 Java 是一种广泛使用的程序设计语言,而 XML 是一种广泛使用的标记语言,用于存储和传输数据。在 Java 中,解析 XML 文件是一件常见的任务,而 JDOM 是一个流行的开源库,用于解析和...

    JAVA解析XML

    ### JAVA解析XML知识点详解 #### 一、XML与JAVA的关系 **XML (eXtensible Markup Language)** 是一种用于标记...此外,还介绍了如何使用Java代码实现这两种方式的具体操作,帮助开发者更好地理解和应用XML解析技术。

    java XML解析

    Java XML解析是Java编程中的一项重要技能,XML(Extensible Markup Language)作为一种可扩展标记语言,广泛用于数据交换、配置存储以及文档结构化等场景。本项目提供了在Eclipse环境中,利用Maven构建的示例代码,...

    xml 解析 xml 解析几何

    总之,XML解析是处理XML数据的关键步骤,DOM和SAX是两种主要的解析方式,各有优缺点。Java提供了强大的XML处理库,使得在Java项目中使用XML变得简单高效。无论是解析配置文件、交换数据还是构建复杂的XML结构,理解...

    xml解析在java中的应用小程序

    XML解析主要分为两种方式:DOM(Document Object Model)和SAX(Simple API for XML)。DOM解析器会将整个XML文档加载到内存中,形成一个树形结构,便于遍历和操作。这种方式适合小规模的XML文档,但对大文件可能会...

Global site tag (gtag.js) - Google Analytics