sax(用于处理XML事件驱动的推模型)解析例子
2014-08-13 11:47
417 查看
SAX解析
Java程序如下:
xml文件如下:
执行效果如下:
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
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事件驱动的“推”模型
- [libexpat]_[XML处理]_[C/C++使用libexpat库以数据流(SAX模型)的方式读取(解析)大XML文件]
- [代码笔记] python 之 xml解析_sax:基于事件驱动的解析方式
- sax和Dom解析xml文档 文档驱动和事件驱动
- [libexpat]_[XML处理]_[C/C++使用libexpat库以数据流(SAX模型)的方式读取(解析)大XML文件]
- SAX解析XML例子
- 基于事件驱动的解析接口 SAX (实例一)
- XML 文档对象模型----从XmlDocument 处理事件
- 基于管道化和事件驱动模型的Web请求处理(二)
- 使用 SAX 处理 XML 解析中的错误
- Event-Driven XML Programming Guide--事件驱动解析XML
- 基于管道化和事件驱动模型的Web请求处理(一)
- 基于事件驱动的解析接口 SAX (实例二)
- 基于管道化和事件驱动模型的Web请求处理(一)
- YARN中MRAppMaster的事件驱动模型与状态机处理消息过程的分析
- 基于管道化和事件驱动模型的Web请求处理(二)
- BREW精要之事件驱动模型――事件处理的提示
- 用SAX解析XML的例子
- XML解析DOM和SAX模型对比分析
- SAX解析XML的例子.