JavaSE_XML解析__JDK自带动态解析
2016-10-28 19:01
183 查看
package com.saxxml.first; import java.util.ArrayList; import java.util.List; 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 SaxXml02 { public static void main(String[] args) throws Exception { //获得SAX解析器工厂 SaxParserFactory SAXParserFactory factory = SAXParserFactory.newInstance(); //获得解析器 SaxParser SAXParser parser = factory.newSAXParser(); //获得读取器 XmlReader XMLReader reader = parser.getXMLReader(); //设置读取器内容setContentHandler final List books = new ArrayList(); reader.setContentHandler(new MyContentHandler(){ Book book = null; String currentTagName = null; @Override public void startElement(String uri, String localName, String qName, Attributes atts) throws SAXException { if("书".equals(qName)){ book = new Book(); } currentTagName = qName; } @Override public void characters(char[] ch, int start, int length) throws SAXException { if("书名".equals(currentTagName)){ book.setName(new String(ch,start,length)); } if("作者".equals(currentTagName)){ book.setAuthor(new String(ch,start,length)); } if("价格".equals(currentTagName)){ book.setPrice(Float.parseFloat(new String(ch,start,length))); } } @Override public void endElement(String uri, String localName, String qName) throws SAXException { if("书".equals(qName)){ books.add(book); book = null; } currentTagName = null; } }); //关联XMl文本 reader.parse("src/book2.xml"); //System.out.println(books); for(Object obj:books){ System.out.println(obj); } } } class MyContentHandler implements ContentHandler{ @Override public void setDocumentLocator(Locator locator) { } @Override public void startDocument() throws SAXException { } @Override public void endDocument() throws SAXException { } @Override public void startPrefixMapping(String prefix, String uri) throws SAXException { } @Override public void endPrefixMapping(String prefix) throws SAXException { } @Override public void startElement(String uri, String localName, String qName, Attributes atts) throws SAXException { } @Override public void endElement(String uri, String localName, String qName) throws SAXException { } @Override public void characters(char[] ch, int start, int length) throws SAXException { } @Override public void ignorableWhitespace(char[] ch, int start, int length) throws SAXException { } @Override public void processingInstruction(String target, String data) throws SAXException { } @Override public void skippedEntity(String name) throws SAXException { } } |
相关文章推荐
- JavaSE_XML解析__JDK自带静态解析
- 使用Java自带SAX工具解析XML
- XML解析与JDK过时类:stringbufferinputstream
- JDK的动态代理深入解析(Proxy,InvocationHandler)
- 使用Java自带SAX工具解析XML
- JDK的动态代理深入解析(Proxy,InvocationHandler)
- js如何在IE中动态用xsl来解析xml
- android 自带 xml解析
- 使用Java自带SAX工具解析XML
- Flex4中动态解析XML数据并转换为ArrayCollection
- JDK自带线程池解析
- [转载]JDK的动态代理深入解析(Proxy,InvocationHandler)
- 使用 JDK 自带的dom 操作XML
- JQuery动态解析DataTable导出的XML
- 用jdk自带包操作XML
- MTK自带的XML解析
- 用jdk自带的xml解析器创建xml文件
- android自带的xml解析类分析
- 基于jdk的2种xml解析方式的比较
- jQuery解析XML文件同时动态增加js文件