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
分享到:
相关推荐
在实际开发中,XPath常与DOM或SAX结合使用,先由DOM或SAX解析XML,然后用XPath进行查询。 实例应用: 假设我们有一个XML文件,内容如下: ```xml <name>John Doe <position>Manager <name>Jane Smith ...
在“testPaseXML”这个项目中,你可以找到这些解析方法的具体实现,包括如何使用DOM创建和解析XML,如何利用DOM4J进行更高效的处理,以及如何运用SAX解析大文件。通过学习和实践这些示例,你可以更好地理解XML处理的...
SAX解析器在内存占用上相对较小,适用于处理大体积的XML文档。程序员通过实现SAX解析器的回调接口来处理这些事件。 DOM(Document Object Model)是另一种XML解析方式,它将整个XML文档加载到内存中,形成一个树形...
开发者需要创建一个实现了SAX解析器回调接口的类,当解析器遇到这些事件时,会调用相应的方法,将XML内容传递给用户代码处理。 **SAX解析的工作流程:** 1. 创建SAX解析器:通过`SAXParserFactory`工厂类获取`...
SAX 解析器将 XML 文档解析为一系列事件,每当发现特定的标签时,触发一个回调方法。SAX 解析器的优点是: * 能够立即开始解析,不需要等待所有数据被处理 * 不需要将数据存储在内存中,适合大型文档 * 选择性地...
- JDOM库的导入和使用方法,包括创建XML文档、解析XML文件、修改XML数据等。 - JOM4J库的API介绍和使用示例,展示如何快速读写XML,以及执行XPath查询。 - 演示如何配置和实现SAX事件处理器,处理XML解析过程中的...
在Android开发中,XML是一种广泛使用的数据交换格式,用于存储和传输结构化数据。SAX(Simple API for XML)是一种事件驱动的XML解析器,...在实际项目中,可以结合具体的业务需求,灵活运用SAX解析XML来实现各种功能。
1. **创建解析器**: 首先,我们需要创建一个SAX解析器实例,通常通过`SAXParserFactory`类的`newSAXParser()`方法实现。 2. **设置事件处理器**: 解析器需要一个`DefaultHandler`或自定义的`ContentHandler`来处理...
SAX解析器逐行扫描XML文档,遇到每个元素、属性、文本节点等都会触发相应的事件,如startElement、endElement、characters等。开发者通过实现SAX解析器的回调接口,为这些事件提供处理器函数,从而实现对XML内容的...
【dom4j基础入门文档(SAX,DOM,XPATH)】 dom4j是一个流行的Java库,专门用于处理XML文档。相较于W3C DOM API,dom4j的优势在于它内置了本地XPath支持,使得XML文档的查询和操作更为简便。本文将深入介绍dom4j的...
相比之下,SAX解析是一种事件驱动的解析方法,它不会将整个XML文档加载到内存中,而是逐行读取并触发相应的事件,如开始元素、结束元素、字符数据等。开发者需要提供事件处理器来响应这些事件,从而实现对XML数据的...
SAX,全称为Simple API for XML,是一种轻量级的解析XML文档的API,它以事件驱动的...这个整理过的SAX源代码,应该包含了一个完整的SAX解析器实现和相关的事件处理器,可以直接运行,以便快速理解和使用SAX解析XML。
在SAX解析中,我们需要实现`DefaultHandler`或其子类,并重写`startElement()`, `endElement()`, `characters()`等方法。创建`SAXParserFactory`,设置解析器并注册事件处理器,最后调用`parse()`方法。例如: ```...
1. SAX解析器: SAX是一种基于事件驱动的解析器,它不会一次性加载整个XML文档到内存,而是逐行读取,当遇到某个元素、属性或其他结构时,会触发相应的事件处理器方法。这种方式适用于处理大型XML文档,因为它占用的...
dom4j支持DOM和SAX解析,同时提供了强大的查询功能,如XPath和XML Schema验证。它的API设计简洁,易于使用,适合各种XML处理需求。 在实际应用中,选择解析器主要取决于需求。如果处理的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中,可以使用`org.xml.sax.helpers.DefaultHandler`和`org.xml.sax.XMLReader`进行SAX解析。 3. PULL解析: PULL解析器(Pull Parser)与SAX类似,也是事件驱动的,但它提供了一个更简单的API,适合...
SAX解析器通过触发一系列的回调事件来解析XML文件。以下是一些核心事件处理方法: - `startDocument()`:XML文档开始。 - `startElement(String uri, String localName, String qName, Attributes atts)`:遇到...
在Java中,使用SAX解析XML需要实现`DefaultHandler`接口,并重写其中的方法,如`startElement`、`endElement`和`characters`等。 ```java import org.xml.sax.helpers.DefaultHandler; import org.xml.sax....