`
xuehaipeng
  • 浏览: 52563 次
  • 性别: Icon_minigender_1
  • 来自: 西安
最近访客 更多访客>>
社区版块
存档分类
最新评论

Sax解析结合Xpath的用法

    博客分类:
  • java
阅读更多
package sax;

import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;

public class SAXReaderUtil {
	public static List<BookModel> saxXMLData() {
		SAXReader saxReader = new SAXReader();
		List<BookModel> bookModelList = new ArrayList<BookModel>();
		try {
			FileInputStream fis = new FileInputStream("F:/WorkSpeace/TestDemo/WebRoot/WEB-INF/classes/books.xml");
			Document doc = saxReader.read(fis);
			List result = doc.selectNodes("//books/book");
			for (Object object : result) {
				BookModel bookModel = new BookModel();
				Node node = (Node) object;
				String id = node.valueOf("@id");
				bookModel.setId(id);
				String name = node.valueOf("name");
				bookModel.setName(name);
				Node imageNode = node.selectSingleNode("image");
				if (imageNode != null) {
					List imageURLList = imageNode.selectNodes("image_url");
					List<String> imageURLListTemp = new ArrayList<String>();
					for (Object object2 : imageURLList) {
						Node imageURLNode = (Node) object2;
						String image_url = imageURLNode.getText();
						imageURLListTemp.add(image_url);
					}
					bookModel.setImageURLList(imageURLListTemp);
				}
				bookModelList.add(bookModel);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return bookModelList;
	}
	public static void main(String[] args) {
		List<BookModel> bookModelList = saxXMLData();
		for (BookModel bookModel : bookModelList) {
			System.out.println(bookModel.getId());
			System.out.println(bookModel.getName());
			List<String> imageList = bookModel.getImageURLList();
			if (imageList != null && imageList.size() > 0) {
				for (String string : imageList) {
					System.out.println(string);
				}
			}
			System.out.println("=================");
		}
	}
}


<?xml version="1.0" encoding="GB2312"?>
<books>
	<book id="1">
		<name>Thinking in JAVA</name>
		<image>
			<image_url>http://www.coojin.com</image_url>
			<image_url>http://shop.coojin.com</image_url>
			<image_url>http://car.coojin.com</image_url>
		</image>
	</book>
	<book id="2">
		<name>Core JAVA2</name>
	</book>
	<book id="3">
		<name>C++ primer</name>
	</book>
</books>

要导入三个jar包:
jaxen-full.jar
saxpath.jar
dom4j-1.6.1.jar
分享到:
评论
1 楼 409693935 2010-07-08  
dom4j不是用sax方式解析xml的,dom4j和jdom都是将整个xml读入内存,处理不了大的xml文件

相关推荐

    Dom,Sax,Xpath解析XML实例

    在实际开发中,XPath常与DOM或SAX结合使用,先由DOM或SAX解析XML,然后用XPath进行查询。 实例应用: 假设我们有一个XML文件,内容如下: ```xml &lt;name&gt;John Doe &lt;position&gt;Manager &lt;name&gt;Jane Smith ...

    dom+dom4J+SAX 解析

    在“testPaseXML”这个项目中,你可以找到这些解析方法的具体实现,包括如何使用DOM创建和解析XML,如何利用DOM4J进行更高效的处理,以及如何运用SAX解析大文件。通过学习和实践这些示例,你可以更好地理解XML处理的...

    XML学习文档(DTD Schema SAX DOM XSL XPATH)

    SAX解析器在内存占用上相对较小,适用于处理大体积的XML文档。程序员通过实现SAX解析器的回调接口来处理这些事件。 DOM(Document Object Model)是另一种XML解析方式,它将整个XML文档加载到内存中,形成一个树形...

    SAX解析xml文件源码

    开发者需要创建一个实现了SAX解析器回调接口的类,当解析器遇到这些事件时,会调用相应的方法,将XML内容传递给用户代码处理。 **SAX解析的工作流程:** 1. 创建SAX解析器:通过`SAXParserFactory`工厂类获取`...

    XML的四种解析器(dom,sax,jdom,dom4j)原理及性能比较,超详细

    SAX 解析器将 XML 文档解析为一系列事件,每当发现特定的标签时,触发一个回调方法。SAX 解析器的优点是: * 能够立即开始解析,不需要等待所有数据被处理 * 不需要将数据存储在内存中,适合大型文档 * 选择性地...

    XML-java.rar_XML SAX_sax_sax xml_sax 解析 xml_xml using dom

    - JDOM库的导入和使用方法,包括创建XML文档、解析XML文件、修改XML数据等。 - JOM4J库的API介绍和使用示例,展示如何快速读写XML,以及执行XPath查询。 - 演示如何配置和实现SAX事件处理器,处理XML解析过程中的...

    安卓SAX解析xml

    在Android开发中,XML是一种广泛使用的数据交换格式,用于存储和传输结构化数据。SAX(Simple API for XML)是一种事件驱动的XML解析器,...在实际项目中,可以结合具体的业务需求,灵活运用SAX解析XML来实现各种功能。

    sax解析xml源代码

    1. **创建解析器**: 首先,我们需要创建一个SAX解析器实例,通常通过`SAXParserFactory`类的`newSAXParser()`方法实现。 2. **设置事件处理器**: 解析器需要一个`DefaultHandler`或自定义的`ContentHandler`来处理...

    sax解析XML

    SAX解析器逐行扫描XML文档,遇到每个元素、属性、文本节点等都会触发相应的事件,如startElement、endElement、characters等。开发者通过实现SAX解析器的回调接口,为这些事件提供处理器函数,从而实现对XML内容的...

    dom4j基础入门文档(SAX,DOM,XPATH)

    【dom4j基础入门文档(SAX,DOM,XPATH)】 dom4j是一个流行的Java库,专门用于处理XML文档。相较于W3C DOM API,dom4j的优势在于它内置了本地XPath支持,使得XML文档的查询和操作更为简便。本文将深入介绍dom4j的...

    JavaWeb 05 XML基础(Dom解析和Sax解析)

    相比之下,SAX解析是一种事件驱动的解析方法,它不会将整个XML文档加载到内存中,而是逐行读取并触发相应的事件,如开始元素、结束元素、字符数据等。开发者需要提供事件处理器来响应这些事件,从而实现对XML数据的...

    经整理过可直接运行的SAX源代码

    SAX,全称为Simple API for XML,是一种轻量级的解析XML文档的API,它以事件驱动的...这个整理过的SAX源代码,应该包含了一个完整的SAX解析器实现和相关的事件处理器,可以直接运行,以便快速理解和使用SAX解析XML。

    dom,dom4j,sax 解析xml文件实例

    在SAX解析中,我们需要实现`DefaultHandler`或其子类,并重写`startElement()`, `endElement()`, `characters()`等方法。创建`SAXParserFactory`,设置解析器并注册事件处理器,最后调用`parse()`方法。例如: ```...

    Java使用sax、dom、dom4j解析xml文档

    1. SAX解析器: SAX是一种基于事件驱动的解析器,它不会一次性加载整个XML文档到内存,而是逐行读取,当遇到某个元素、属性或其他结构时,会触发相应的事件处理器方法。这种方式适用于处理大型XML文档,因为它占用的...

    用DOM SAX JDom dom4j 对xml文档解析实例

    dom4j支持DOM和SAX解析,同时提供了强大的查询功能,如XPath和XML Schema验证。它的API设计简洁,易于使用,适合各种XML处理需求。 在实际应用中,选择解析器主要取决于需求。如果处理的XML文件较小,内存资源充足...

    JDOM SAX解析XML的对比及相关内容

    而SAX解析XML的示例代码如下: ```java import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; public class SAXExample extends DefaultHandler { @...

    android中xml的三种解析方式(DOM,SAX,PULL)

    在Android中,可以使用`org.xml.sax.helpers.DefaultHandler`和`org.xml.sax.XMLReader`进行SAX解析。 3. PULL解析: PULL解析器(Pull Parser)与SAX类似,也是事件驱动的,但它提供了一个更简单的API,适合...

    sax生成并解析大文件的xml

    SAX解析器通过触发一系列的回调事件来解析XML文件。以下是一些核心事件处理方法: - `startDocument()`:XML文档开始。 - `startElement(String uri, String localName, String qName, Attributes atts)`:遇到...

    使用sax,pull,dom4j解析XML

    在Java中,使用SAX解析XML需要实现`DefaultHandler`接口,并重写其中的方法,如`startElement`、`endElement`和`characters`等。 ```java import org.xml.sax.helpers.DefaultHandler; import org.xml.sax....

Global site tag (gtag.js) - Google Analytics