XML(三)Sax解析XML
发布时间:2020-12-16 09:04:40 所属栏目:百科 来源:网络整理
导读:两种解析方式: dom4j 和 sax 解析思想: book2.xml ?xml version="1.0" encoding="UTF-8"?书架 书 书名JAVA/书名 作者XXXXXX/作者 售价23333/售价 /书 书 书名ANDROID/书名 作者XXXXXX/作者 售价23333/售价 /书 /书架 利用Sax解析book2.xml文件 public clas
两种解析方式: dom4j 和 sax 解析思想: book2.xml <?xml version="1.0" encoding="UTF-8"?> <书架> <书> <书名>JAVA</书名> <作者>XXXXXX</作者> <售价>23333</售价> </书> <书> <书名>ANDROID</书名> <作者>XXXXXX</作者> <售价>23333</售价> </书> </书架> 利用Sax解析book2.xml文件 public class SaxDemo { public static void main(String[] args) throws Exception { // 获取解析器工厂 SAXParserFactory factory = SAXParserFactory.newInstance(); // 通过工厂来获取sax解析器 SAXParser parser = factory.newSAXParser(); // 获取读取器 XMLReader reader = parser.getXMLReader(); // 注册事件处理器 reader.setContentHandler(new MyContentHandler1()); // 解析xml reader.parse("book2.xml"); } } class MyContentHandler1 implements ContentHandler { @Override public void startDocument() throws SAXException { System.out.println("文档解析开始"); } @Override public void startElement(String uri,String localName,String qName,Attributes atts) throws SAXException { System.out.println("发现开始标签..." + qName); } @Override public void characters(char[] ch,int start,int length) throws SAXException { System.out.println(new String(ch,start,length)); } @Override public void endElement(String uri,String qName) throws SAXException { System.out.println("发现结束标签..." + qName); } @Override public void endDocument() throws SAXException { System.out.println("文档解析结束"); } /********************************************************************/ @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 } }
这样的结果是将整个xml文档都解析出来了,如何获得文档中的某一个标签体呢? 获得第二本书的书名 ,也就是ANDROID public class SaxDemo { public static void main(String[] args) throws Exception { // 获取解析器工厂 SAXParserFactory factory = SAXParserFactory.newInstance(); // 通过工厂来获取sax解析器 SAXParser parser = factory.newSAXParser(); // 获取读取器 XMLReader reader = parser.getXMLReader(); // 注册事件处理器 reader.setContentHandler(new MyContentHandler2()); // 解析xml reader.parse("book2.xml"); } } class MyContentHandler2 extends DefaultHandler { private String name = null; int count = 0; @Override public void startElement(String uri,Attributes attributes) throws SAXException { this.name = qName; } @Override public void characters(char[] ch,int length) throws SAXException { if ("书名".equals(name) && count++ == 1) { System.out.println(new String(ch,length)); } } @Override public void endElement(String uri,String qName) throws SAXException { name = null; } }
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- c# – ‘decimal’不包含’Round’的定义
- AJAX和三层架构实现分页功能
- Heroku bundle使用Gem :: RemoteFetcher :: FetchError失败
- ios – 上传到Itunes Connect时“代码签名”GoogleToolboxF
- iphone – 当我向AppStore提交应用更新时,更新配置文件是否
- c# – 将DataTable中列的DataType从DateTime更改为String
- 检查Flex中是否有密钥可用
- postgresql – 如何验证pg_dump存档生成的存档是否正常?
- Esper事件处理引擎_4_XML 数据结构处理
- mini2440 uboot201103 系统移植