`
ttitfly
  • 浏览: 623824 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Dom and Sax

    博客分类:
  • java
阅读更多
jaxp: java apis for xml parsing,对xml进行解析的java apis,主要有以下2中解析:
1.dom:document object model 文档对象模型 是一种idl(interface description language)语言,全是接口,没有实现
2.sax:simple apis for xml  ,xml解析的简单api,民间标准。基于事件处理,主要使用观察者模式,便于读,不用加载整个文档


对dom和sax来说,处理xml过程
1.获得解析器工厂
通过解析器工厂获得解析器
3.通过解析器来对xml处理

例如:解析下面这段xml
<?xml version="1.0" encoding="UTF-8"?>
<Student>
  <student1>
	<name>zhangsan</name>
	<age>20</age>
	<class>3(7)</class>
  </student1>

  <student2>
	<name>lisi</name>
	<age>24</age>
	<class>3(6)</class>
  </student2>

  <student3>
	<name>test</name>
	<age>29</age>
	<class>3(5)</class>
  </student3>
</Student>


Document对象代表文档的根节点,它是解析xml文档的入口,上面的xml里<Student>是根元素节点








package test;

import java.io.File;

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;
import org.w3c.dom.Text;

public class DomTest {
	public static void main(String[] args) {
		try{
			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
			DocumentBuilder buider = factory.newDocumentBuilder();
			
			//获得根节点
			Document document = buider.parse(new File("test.xml")) ;
			//输出结果为:com.sun.org.apache.xerces.internal.dom.DOMImplementationImpl@124bbbf可以看到具体实现是apache的一个实现,因为dom是一种idl语言,全是接口,没有实现
			System.out.println(document.getImplementation());
			
			//获得元素节点的一个集合
			NodeList nodeList = document.getElementsByTagName("student");
			System.out.println(nodeList.getLength());
			
			for(int i=0;i<nodeList.getLength();i++){
				//Node是顶级父接口。Element和Text都是其子类
				Element element = (Element)nodeList.item(i);
				Text textName = (Text)(element.getElementsByTagName("name").item(0).getFirstChild());
				System.out.println("name: " + textName.getNodeValue());
				
				Text textAge = (Text)(element.getElementsByTagName("age").item(0).getLastChild());
				System.out.println(textAge);//打印出来的为[#text: 20]
				System.out.println("age: " + textAge.getNodeValue());
				
				//是不是非Text的Node元素不能使用getFirstChild()和getLastChild();
				System.out.println(element.getFirstChild());//打印出来的为[#text:  ]
				System.out.println(element.getLastChild());//打印出来的为[#text:  ]
				
				//下面这2行注释的不正确
//				Text textId = (Text)(element.getLastChild().getFirstChild());
//				System.out.println("id: " + textId.getNodeValue());
			}

		}catch(Exception e){
			e.printStackTrace();
		}
		
	}

}


分享到:
评论

相关推荐

    dom and sax 读取xml

    在处理XML文档时,有两大主流解析方式:DOM(Document Object Model)和SAX(Simple API for XML)。这两种方法各有特点,适用于不同的场景。 DOM解析器将整个XML文档加载到内存中,构建一个树形结构,即DOM树。每...

    Java 2 核心技术 卷1&卷2 CHM版 英文版

    XMLDOM and SAX parsers, XPath, and XSL transformations The seventh edition of Core Java? 2, Volume II, covers advanced user-interface programming and the enterprise features of the Java 2 Platform,...

    DOM-and-SAX-implementation:使用 DOM 和 SAX 实现的 xml 解析

    DOM 和 SAX 实现使用 DOM 和 SAX 实现的 xml 解析-&gt; 包库包含使用 DOM 解析 xml 的代码。 正在解析 USER.xml。 -&gt; 包 base1 包含使用 SAX 解析 xml 的代码。 正在解析 USER.xml。更新 1:-&gt; -&gt; xml("User.xml) 与 DTD...

    Dom4j 使用指南

    Dom4j is an easy to use, open source library for working with XML, XPath and XSLT on the Java platform using the Java Collections Framework and with full support for DOM, SAX and JAXP. Dom4j是一个易用...

    Python通过DOM和SAX方式解析XML的应用实例分享

    ### Python通过DOM和SAX方式解析XML的应用实例详解 #### 概述 本文将详细介绍如何在Python中使用DOM(Document Object Model)与SAX(Simple API for XML)两种方法来解析XML文件。这两种方法各有优势,适用于不同...

    xml api reference

    - **DOM and SAX Support**: 支持DOM和SAX两种模型来解析XML文档。 - **StAX Support**: 提供了StAX (Streaming API for XML) 支持,适用于处理大型XML文档。 - **Web Services Integration**: 可以与Web服务无缝...

    Beginning PHP 5.3

    - **DOM and SAX:** Overview of DOM (Document Object Model) and SAX (Simple API for XML) parsing techniques. - **Creating XML Documents:** Techniques for creating XML documents dynamically in PHP. - **...

    POI3.8组件研究(七)--基于XSSF and SAX (Event API)事件的解析

    标题 "POI3.8组件研究(七)--基于XSSF and SAX (Event API)事件的解析" 提到了Apache POI库的一个高级话题,主要关注的是如何使用XSSF(XML Spreadsheet Formatting Streams)和SAX(Simple API for XML)的Event ...

    开源XML解析包dom4j

    它的网站中这样定义: Dom4j is an easy to use, open source library for working with XML, XPath and XSLT on the Java platform using the Java Collections Framework and with full support for DOM, SAX and ...

    dom4j-1.6.1 + w3cschool.CHM离线帮助文档

    早期 JDK 为我们提供了两种 xml 解析技术 DOM 和 Sax 简介(已经过时,但我们需要知道这两种技术) dom 解析技术是 W3C 组织制定的,而所有的编程语言都对这个解析技术使用了自己语言的特点进行实现。 Java 对 dom ...

    dom4j的jar包以及说明文档

    dom4j is an easy to use, open source library for working with XML, XPath and XSLT on the Java platform using the Java Collections Framework and with full support for DOM, SAX and JAXP.

    Wrox.Beginning.Xml.2ed-Xml.Schemas.Soap.Xslt.Dom.And.Sax.2.0.rar

    sax2 SAX的工作原理简单地说就是对文档进行顺序扫描,当扫描到文档(document)开始与结束、元素(element)开始与结束、文档(document)结束等地方时通知事件处理函数,由事件处理函数做相应动作,然后继续同样的...

    dom4j帮助文档

    Dom4j is an easy to use, open source library for working with XML, XPath and XSLT on the Java platform using the Java Collections Framework and with full support for DOM, SAX and JAXP.

    dom4j api 参考手册

    org.dom4j.io Provides input and output via SAX and DOM together with writing dom4j objects to streams as XML text. org.dom4j.jaxb org.dom4j.rule A Pattern based XML rule engine which implements the ...

    java对dom的三种操作方式

    // Load and parse XML file into DOM public Document parse(String filePath) throws ParserConfigurationException, SAXException, IOException { DocumentBuilder builder = builderFactory....

    MacOS:Xerces

    A shared library is provided for parsing, generating, manipulating, and validating XML documents using the DOM, SAX, and SAX2 APIs. For an introduction to programming with Xerces-C++ refer to the ...

    XML_XSL_DTD_SCHEMA_SAX_DOM_JDOM_WEBSERVICE简介.pdf

    ### XML_XSL_DTD_SCHEMA_SAX_DOM_JDOM_WEBSERVICE简介 #### 背景知识点拨 XML(可扩展标记语言,Extensible Markup Language)及其相关技术(如XSL、DTD、Schema、SAX、DOM、JDOM以及Web服务)在现代信息技术中...

    DOM4J and JDOM.rar

    DOM4J的名字来源于"Document Object Model for Java",但它不仅仅是一个DOM实现,还包括了SAX和StAX的支持。以下是一些DOM4J的主要特性: 1. **API设计**:DOM4J的API设计易于理解和使用,它提供了元素、属性、文本...

Global site tag (gtag.js) - Google Analytics