SAX解析XML(入门)
发布时间:2020-12-16 08:32:46 所属栏目:百科 来源:网络整理
导读:/prepspan style="font-size:14px;"xml文件为myClass.xml:/span/pppre name="code" class="html"?xml version="1.0" encoding="UTF-8"? books book id="001" title张三传记/title author张三/author /book book id="002" title李四传记/title author李四/au
</pre><p><span style="font-size:14px;">xml文件为myClass.xml:</span></p><p><pre name="code" class="html"><?xml version="1.0" encoding="UTF-8"?> <books> <book id="001"> <title>张三传记</title> <author>张三</author> </book> <book id="002"> <title>李四传记</title> <author>李四</author> </book> </books>这个类主要就是重写了DefaultHandler类的方法。然后getList和getReader方法就是便于测试的。 package cn.spy.reader; import java.util.ArrayList; import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.XMLReader; import org.xml.sax.helpers.DefaultHandler; import cn.spy.po.Book; public class SaxReader extends DefaultHandler{ ArrayList<Book> list=new ArrayList<Book>(); private String currentTag; private Book book; @Override public void characters(char[] ch,int start,int length) throws SAXException { if("title".equals(currentTag)){ String title=new String(ch,start,length); book.setTitle(title); } if("author".equals(currentTag)){ String author=new String(ch,length); book.setAuthor(author); } } @Override public void endElement(String uri,String localName,String qName) throws SAXException { if("book".equals(qName)){ list.add(book); book=null; } currentTag=null; } @Override public void startElement(String uri,String qName,Attributes attributes) throws SAXException { currentTag=qName; if("book".equals(currentTag)){ book=new Book(); } } public ArrayList<Book> getList(){ return list; } public XMLReader getReader() throws ParserConfigurationException,SAXException { SAXParserFactory factory=SAXParserFactory.newInstance(); SAXParser parser=factory.newSAXParser(); XMLReader reader=parser.getXMLReader(); return reader; } }测试类: public class SaxTest { public static void main(String[] args) throws Exception{ SaxReader saxReader=new SaxReader(); XMLReader reader=saxReader.getReader(); reader.setContentHandler(saxReader); reader.parse("src/myClass.xml"); ArrayList<Book> arrayList=saxReader.getList(); for(Book book:arrayList){ System.out.println(book.getTitle()+":"+book.getAuthor()); } } } 测试结果: 张三传记:张三
API: startElement:
默认情况下,不执行任何操作。应用程序编写者可以在子类中重写此方法,以便在每个元素的开始处采取特定的操作(如,分配新的树节点或将输出写入文件).
characters:
默认情况下,不执行任何操作。应用程序编写者可以重写此方法,以便对每块字符数据采取特定的措施(如将该数据添加到节点或缓冲区,或者将该数据打印到文件)。
ch - 字符。
start - 字符数组中的开始位置。
length - 从字符数组中使用的字符数。
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |