sax(用于处理XML事件驱动的推模型)解析例子
SAX解析
Java程序如下:
import org.xml.sax.helpers.DefaultHandler; import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory; import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader; public class Test7 extends DefaultHandler
{
int indent = 0; public Test7() {
} public void startElement(String namespaceURI, String localName,
String qName, Attributes atts) throws SAXException {
if (qName == "response") {
System.out.println("User: " + atts.getValue("username"));
} else if (qName == "question") {
thisQuestion = atts.getValue("subject");
} thisElement = qName; } public void endElement(String namespaceURI, String localName, String qName)
throws SAXException { thisQuestion = "";
thisElement = "";
}
public void characters(char[] ch, int start, int length)
throws SAXException { if (thisElement == "question") {
printIndent(4);
System.out.print(thisQuestion + ": ");
System.out.println(new String(ch, start, length));
}
} public void startDocument() throws SAXException {
System.out.println("Tallying survey results...");
indent = -4; } public void printIndent(int indentSize) {
for (int s = 0; s < indentSize; s++) {
System.out.print(" ");
}
} String thisQuestion = "";
String thisElement = ""; public static void main (String args[]) { XMLReader xmlReader = null; try { SAXParserFactory spfactory = SAXParserFactory.newInstance(); SAXParser saxParser = spfactory.newSAXParser(); xmlReader = saxParser.getXMLReader();
xmlReader.setContentHandler(new Test7()); InputSource source = new InputSource("surveys.xml");
xmlReader.parse(source); } catch (Exception e) {
System.err.println(e);
System.exit(1);
} }
}
xml文件如下:
<?xml version="1.0"?>
<surveys>
<response username="bob">
<question subject="appearance">A</question>
<question subject="communication">B</question>
<question subject="ship">A</question>
<question subject="inside">D</question>
<question subject="implant">B</question>
</response>
<response username="sue">
<question subject="appearance">C</question>
<question subject="communication">A</question>
<question subject="ship">A</question>
<question subject="inside">D</question>
<question subject="implant">A</question>
</response>
<response username="carol">
<question subject="appearance">A</question>
<question subject="communication">C</question>
<question subject="ship">A</question>
<question subject="inside">D</question>
<question subject="implant">C</question>
</response>
</surveys>
执行效果如下:
Tallying survey results...
User: bob
appearance: A
communication: B
ship: A
inside: D
implant: B
User: sue
appearance: C
communication: A
ship: A
inside: D
implant: A
User: carol
appearance: A
communication: C
ship: A
inside: D
implant: C
sax(用于处理XML事件驱动的推模型)解析例子的更多相关文章
- Json/Xml简介和处理模型
JSON json简介 JSON是一种基于文本的数据交换格式,源自JavaScript,用于Web服务和其他连接的应用程序.以下部分介绍了JSON语法,JSON使用概述以及生成和解析JSON的最常用方 ...
- XML概念定义以及如何定义xml文件编写约束条件java解析xml DTD XML Schema JAXP java xml解析 dom4j 解析 xpath dom sax
本文主要涉及:xml概念描述,xml的约束文件,dtd,xsd文件的定义使用,如何在xml中引用xsd文件,如何使用java解析xml,解析xml方式dom sax,dom4j解析xml文件 XML来 ...
- Paip.Php Java 异步编程。推模型与拉模型。响应式(Reactive)”编程FutureData总结... 1
Paip.Php Java 异步编程.推模型与拉模型.响应式(Reactive)"编程FutureData总结... 1.1.1 异步调用的实现以及角色(:调用者 提货单) F ...
- XML的概述,.Dom4解析和SAX解析
1.什么是XML XML 指可扩展标记语言(EXtensible Markup Language) html(hyper text markup langauge) XML 是一种标记语言,很类似 H ...
- XML的DOM、SAX、DEMO4J及DEMO4J整合Path的代码例子
1.DMO解析 package cn.itcast.xml.dom; import java.io.File; import javax.xml.parsers.DocumentBuilder; im ...
- 在Flex中用于处理XML对象的E4X 方法
ECMAScript for XML 规范定义了一组用于使用 XML 数据的类和功能.这些类和功能统称为 E4X.ActionScript 3.0 包含以下 E4X 类:XML.XMLList.QNa ...
- XML文件的创建和解析笔记
解析XML的四种方法 XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便.对于XML本身的语法知识与技术细节,需要阅读相关的技术文献,这 ...
- Comet:基于 HTTP 长连接的“服务器推”技术解析
原文链接:http://www.cnblogs.com/deepleo/p/Comet.html 一.背景介绍 传统web请求,是显式的向服务器发送http Request,拿到Response后显示 ...
- Caffe学习笔记(一):Caffe架构及其模型解析
Caffe学习笔记(一):Caffe架构及其模型解析 写在前面:关于caffe平台如何快速搭建以及如何在caffe上进行训练与预测,请参见前面的文章<caffe平台快速搭建:caffe+wind ...
随机推荐
- unix & linux oralce用户 内存使用情况分析
Linux*********************************************************************************************** ...
- MySQL列:innodb的源代码的分析的基础数据结构
在过去的一年中的数据库相关的源代码分析.前段时间分析levelDB实施和BeansDB实现,数据库网络分析这两篇文章非常多.他们也比较深比较分析,所以没有必要重复很多劳力.MYSQL,当然主要还是数据 ...
- Mybatis如何SQL声明表名称参数
insert into prefix_${table_name} (a, b, c) values (#{a}, #{b}, #{c}) ${} 它代表了直接使用字面(literal value) # ...
- C# 闭包问题
C# 闭包问题-你被”坑“过吗? 引言 闭包是什么?以前看面试题的时候才发现这个名词. 闭包在实际项目中会有什么问题?现在就让我们一起来看下这个不太熟悉的名词. 如果在实际工作中用到了匿名函数和lam ...
- C语言,如何检查文件是否存在和权限的信息
按功能access,头文件io.h(linux通过使用unistd.h int access(const char *filename, int amode); amode參 ...
- lua 怎样输出树状结构的table?
为了让游戏前端数据输出更加条理,做了一个简单树状结构来打印数据. ccmlog.lua local function __tostring(value, indent, vmap) local str ...
- linux 文件系统解析及相关命令(转)
简介 文件系统就是分区或磁盘上的所有文件的逻辑集合. 文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有Linux 用户和程序看到的文件.目录.软连接及文件保护信息等都存储在其中. 不同Lin ...
- DFT 展开式和 FFT推导
C语言的FFT //---------------------------------------------------------------------------------- //----- ...
- ExecutorService invokeAll 实例(转)
10个班级,每个班级20名学生,在指定的时间内查询每个班级学生的集合. package cn.com.ld.study.thread; import java.util.ArrayList; impo ...
- Oracle 多行转多列
Oracle 多行转多列,列值转为列名 前段时间做调查问卷,客户创建自定义问卷内容,包括题目和选项内容; 之后需要到处问卷明细,,,,麻烦来咯 于是到网上到处搜索,没有直接结果;于是又找各种相似的 ...