麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

SAX解析XML

2019-11-10 20:26:34
字體:
來源:轉載
供稿:網友

介紹

java解析xml有兩種基本的方式,DOMSAX。今天先簡單記錄下SAX解析XML。

SAX(Simple API for XML),既是一種接口,也是一種軟件包。它是一種XML解析的替代方法。SAX不同于DOM解析,它逐行掃描文檔,一邊掃描一邊解析。

示例

book.xml

<?xml version="1.0" encoding="UTF-8"?> <books> <book id="1"> <name>平凡的世界</name> <author>路遙</author> </book> <book id="2"> <name>活著</name> <author>余華</author> </book> </books>

Book.java

public class Book{ PRivate int id; private String name; private String author; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; }}

SaxParseXmlHandler.java

public class SaxParseXmlHandler extends DefaultHandler{ private List<Book> books; private Book book; private String nodeName; //開始解析文檔 @Override public void startDocument() throws SAXException { books = new ArrayList<>(); } //解析開始節點 @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { if("book".equals(qName)){ book=new Book(); //獲取book節點的id屬性 book.setId(Integer.parseInt(attributes.getValue(0))); } nodeName=qName; } //獲取節點內容 @Override public void characters(char[] ch, int start, int length) throws SAXException { if(null!=nodeName){ String content=new String(ch,start,length); switch(nodeName){ case "name": book.setName(content); break; case "author": book.setAuthor(content); break; } } } //解析結束節點 @Override public void endElement(String uri, String localName, String qName) throws SAXException { if("book".equals(qName)){ books.add(book); book=null; } nodeName=null; } //結束解析文檔 @Override public void endDocument() throws SAXException { super.endDocument(); } //返回解析結果 public List<Book> getBooks(){ return boooks; }}

Test.java

public class Test{ public static void main(String[] args) { try { //創建SAX解析器工廠 SAXParserFactory factory = SAXParserFactory.newInstance(); //創建SAX解析器 SAXParser saxParser = factory.newSAXParser(); //獲取XML讀取器 XMLReader reader = saxParser.getXMLReader(); //實例化SaxParseXmlHandler SaxParseXmlHandler handler = new SaxParseXmlHandler(); //設置內容處理器 reader.setContentHandler(handler); //讀取XML reader.parse("book.xml"); List<Book> books = handler.getBooks(); for (Book book : books) { System.out.println("id:" + book.getId() + ",name:" + book.getName() + ",author:" + book.getAuthor()); } } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }}

打印結果

這里寫圖片描述

注意事項

讀取XML文件時,如果XML文件和當前類不在同一個路徑,可采用寫完整路徑的方式讀取。如:

InputStream is = Test.class.getClassLoader().getResourceAsStream("com/ywb/context/config/book.xml");reader.parse(new InputSource(is));
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 精品在线视频播放 | asian gaysex| 日本aaaa片毛片免费观蜜桃 | 精品国产91久久久久久久妲己 | 欧产日产国产精品v | 毛片大全在线观看 | 久久国产精品久久久久久 | 一级免费在线 | 色综合视频网 | 国产精品hd免费观看 | 日本网站在线播放 | 国产一区二区精品91 | 一区二区三区欧美日韩 | 9999免费视频| 精品一区二区三区网站 | 日本成年免费网站 | 91成人免费看片 | 污视频在线免费 | 在线看小早川怜子av | 最近中文字幕一区二区 | 国产一级二级毛片 | 男女羞羞视频在线观看免费 | 中文在线观看www | 中文在线日韩 | 免费观看高清视频网站 | v天堂在线视频 | 成人一区二区三区四区 | 亚洲特黄妇女高潮 | 看免费的毛片 | 黄网站免费观看视频 | 国产一区视频在线免费观看 | h视频在线免费看 | www.17c亚洲蜜桃 | 国产成人高潮免费观看精品 | 久草在线视频网 | 91精品国产综合久久久动漫日韩 | 久草在线资源观看 | 亚洲一区二区中文 | 久久久久久久九九九九 | 在线免费观看毛片视频 | 国产高潮失禁喷水爽到抽搐视频 |