解析xml并打印出所有的属性名称和文本内容
1 test-a.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<result>
<man>
<name>sky</name>
<age>18</age>
<sex>1</sex>
</man>
</result>
2 自定义handler的编写
package com.java.xml.SAX;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
/**
* 自定义sax解析器
* @author Administrator
*
*/
public class MySAXHandler extends DefaultHandler {
public void print(String str)
{
System.out.println(str);
}
public void startDocument() throws SAXException
{
print("sax event:start document");
}
public void endDocument() throws SAXException
{
print("sax event:end document");
}
public void startElement(String nameSpaceUri,
String localName,String qName,
Attributes attr) throws SAXException
{
print("sax event:start element["+qName+"]");
//如果有属性,打印属性
for (int i = 0; i < attr.getLength(); i++)
{
print("attribute:"+attr.getLocalName(i)+"value:"+attr.getValue(i));
}
}
public void endElement(String nameSpaceUri,
String localName,String qName) throws SAXException
{
print("sax event:end element["+qName+"]");
}
public void characters(char[] ch,int start,int length) throws SAXException
{
print("sax event:characters["+new String(ch,start,length).trim()+"]");
}
}
3 java sax访问,主要功能是遍历xml文件并按层次打印出所有的节点名称和文本内容
package com.java.xml.SAX;
import java.io.File;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
/**
* 为解决DOM的问题,出现了SAX.SAX ,事件驱动。
* 当解析器发现元素开始、元素结束、文本、文档的开始或结束等时,
* 发送事件,程序员编写响应这些事件的代码,保存数据。
* 优点:不用事先调入整个文档,占用资源少;
* SAX解析器代码比DOM解析器代码小,适于Applet,下载。
* 缺点:不是持久的;事件过后,若没保存数据,那么数据就丢了;
* 无状态性;从事件中只能得到文本,但不知该文本属于哪个元素;
* 使用场合:Applet;只需XML文档的少量内容,很少回头访问;机器内存少;
* @author Administrator
*
*/
public class SaxA {
/**
* dom4j解析
*/
public static void dom()
{
try
{
File xml = new File("D:/新的开始/学习笔记/java学习/xml解析/test-a.xml");
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser();
parser.parse(xml, new MySAXHandler());
// // 建立SAX 2解析器...
// XMLReader xr = XMLReaderFactory.createXMLReader();
//
// // 安装ContentHandler...
// xr.setContentHandler( new MySAXHandler() );
//
// // 解析文件...
// xr.parse( new InputSource(new FileReader("D:/新的开始/学习笔记/java学习/xml解析/test-a.xml" )));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
dom();
}
}
4 执行SaxA对象的main方法,输出如下:
sax event:start document
sax event:start element[result]
sax event:characters[]
sax event:start element[man]
sax event:characters[]
sax event:start element[name]
sax event:characters[sky]
sax event:end element[name]
sax event:characters[]
sax event:start element[age]
sax event:characters[18]
sax event:end element[age]
sax event:characters[]
sax event:start element[sex]
sax event:characters[1]
sax event:end element[sex]
sax event:characters[]
sax event:end element[man]
sax event:characters[]
sax event:end element[result]
sax event:end document
4 注意点:
给我的感觉,sax解析时也会长生空白的element,
(sax event:characters[]这种就是空白text-element).
分享到:
相关推荐
**SAX解析XML详解** XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件和Web服务等领域。SAX(Simple API for XML)是XML解析的一种方式,它采用事件驱动模型,以流式处理...
本篇将详细讲解如何在Android环境中使用SAX解析XML。 1. **SAX解析的基本原理** SAX解析器读取XML文档时,遇到每个元素、属性、文本等都会触发相应的事件,开发者需要注册事件处理器来处理这些事件。这种方式适合...
### 使用SAX解析XML文件详解 #### 一、XML与SAX简介 XML(Extensible Markup Language,可扩展标记语言)是一种用于标记电子文件使其具有结构性的标记语言,旨在克服HTML的一些不足,使得数据能够被不同系统间共享...
### Android学习笔记1—SAX解析XML #### SAX解析XML概览 在Android开发中,XML文件被广泛用于布局设计、资源定义等场景。而为了处理这些XML文件,开发者需要了解不同的XML解析技术,其中SAX(Simple API for XML)...
### SAX 解析 XML 实例详解 #### 一、SAX 解析器简介 SAX (Simple API for XML) 是一种基于事件驱动模型的 XML 解析技术。与 DOM (Document Object Model) 解析不同,SAX 不会将整个 XML 文档加载到内存中,而是...
总之,Android提供了SAX和PULL两种解析XML的手段,开发者可以根据具体情况灵活选择。在内存有限或者需要高效处理大量XML数据的情况下,SAX可能是更好的选择;而在追求简洁代码和快速开发的场合,PULL解析则更为便捷...
本文将深入讲解如何在Android中使用SAX解析XML以及如何通过SAX方式创建XML。 **1. SAX解析XML** SAX解析XML的基本流程是:创建SAXParserFactory,通过该工厂实例化SAXParser,然后设置事件处理器(ContentHandler...
### DOM4J解析XML详解 #### 一、DOM4J简介与特性 DOM4J是一个由dom4j.org开发的开源XML解析包,专为Java平台设计,它不仅支持DOM、SAX和JAXP标准,还巧妙地融入了Java集合框架,使其成为Java开发者在处理XML数据时...
Java作为一门流行的编程语言,提供了多种方式来解析XML文档,以便开发者能够有效地读取、操作和转换XML数据。本文将深入探讨Java解析XML的各种方法及其应用场景,旨在为读者提供全面而深入的理解。 ### Java解析XML...
Java解析XML技术详解: 在信息技术领域,XML(Extensible Markup Language,可扩展标记语言)是一种被广泛使用的标记语言,用于存储和传输数据。它与HTML相似,也是一种标记语言,但是HTML用于网页的格式化,而XML...
本篇文章将详细介绍如何在Android中使用SAX解析XML数据。 首先,我们需要一个XML文件作为解析的源数据。例如: ```xml <?xml version="1.0" encoding="UTF-8"?> <name>will <age>21 <name>will2 <age>...
Java DOM4J解析XML详解 XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件和文档存储等领域。DOM4J是Java中一个强大的、轻量级的处理XML的库,它提供了丰富的API来读取、...
本文将深入解析XML的基本概念、结构、解析方法,并介绍与之相关的Java库——Jar包及其源码。 XML的核心是其结构化特性,它通过元素(Element)、属性(Attribute)和文本内容来描述数据。每个XML文档都由一个根元素...
本文将深入探讨如何使用SAX解析XML,这是一种轻量级且高效的方法,尤其适合内存和计算资源有限的环境,如Android设备。 SAX(Simple API for XML)解析器遵循事件驱动模式,与DOM(Document Object Model)解析器...
XML 解析与封装详解 XML(eXtensible Markup Language),即可扩展的标记性语言,是一种用于存储和传输数据的语言。XML 文件的所有标记都是可扩充的,不像 HTML 那样是固定的,而是由用户自行规定出来的。XML 的...