编写一个属于自己的sax解析xml文档
发布时间:2020-12-16 06:12:11 所属栏目:百科 来源:网络整理
导读:首先需要一个xml文档 ?xml version="1.0" encoding="UTF-8"?书架 书 书名Hack36计/书名 价格78/价格 作者老死不相往来/作者 /书 书 书名android高级程序设计/书名 价格89/价格 作者留下你的风衣/作者 /书 书 书名C++高级架构/书名 价格56/价格 作者郁闷终生/
首先需要一个xml文档
<?xml version="1.0" encoding="UTF-8"?> <书架> <书> <书名>Hack36计</书名> <价格>78</价格> <作者>老死不相往来</作者> </书> <书> <书名>android高级程序设计</书名> <价格>89</价格> <作者>留下你的风衣</作者> </书> <书> <书名>C++高级架构</书名> <价格>56</价格> <作者>郁闷终生</作者> </书> </书架> 然后利用程序对其进行解析,解析的主要过程是获取第三本书的书名
详细叙述一下sax的解析过程 sax解析是对标签名的解析,利用标签的名字进行解析 解析的过程就是有一个阅读器去读取xml文档, 然后又有一个内容触发器去处理所得到的内容, 所以sax解析的流程如下 package com.jack.xml; import java.io.IOException; import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.Attributes; import org.xml.sax.ContentHandler; import org.xml.sax.Locator; import org.xml.sax.SAXException; import org.xml.sax.XMLReader; public class XMLParseTest { // 创建内容解析对象 ContentHandler handler = new ContentHandler() { String name = null; int count = 0; @Override public void startDocument() throws SAXException { // TODO Auto-generated method stub System.out.println("开始解析对文档"); } @Override public void endDocument() throws SAXException { // TODO Auto-generated method stub System.out.println("文档解析结束"); } @Override public void startElement(String uri,String localName,String qName,Attributes atts) throws SAXException { // TODO Auto-generated method stub this.name = qName; } @Override public void characters(char[] ch,int start,int length) throws SAXException { // TODO Auto-generated method stub if ("书名".equals(name)) { count++; //System.out.println("count=====>"+count); if (count == 3) { System.out.println(new String(ch,start,length)); } } } @Override public void endElement(String uri,String qName) throws SAXException { // TODO Auto-generated method stub this.name = ""; } @Override public void setDocumentLocator(Locator locator) { // TODO Auto-generated method stub } @Override public void startPrefixMapping(String prefix,String uri) throws SAXException { // TODO Auto-generated method stub } @Override public void endPrefixMapping(String prefix) throws SAXException { // TODO Auto-generated method stub } @Override public void ignorableWhitespace(char[] ch,int length) throws SAXException { // TODO Auto-generated method stub } @Override public void processingInstruction(String target,String data) throws SAXException { // TODO Auto-generated method stub } @Override public void skippedEntity(String name) throws SAXException { // TODO Auto-generated method stub } }; public static void main(String[] args) { XMLParseTest test = new XMLParseTest(); test.saxXMLParse(); } public void saxXMLParse() { // 创建解析工厂 SAXParserFactory factory = SAXParserFactory.newInstance(); // 获取解析器 SAXParser parser = null; try { parser = factory.newSAXParser(); } catch (ParserConfigurationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SAXException e) { // TODO Auto-generated catch block e.printStackTrace(); } // 获取读取器 XMLReader reader = null; try { reader = parser.getXMLReader(); } catch (SAXException e) { // TODO Auto-generated catch block e.printStackTrace(); } // 设置内容触发器 reader.setContentHandler(handler); // 解析文档 try { reader.parse("books.xml"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SAXException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |