Java之xml文件解析二(SAX方式解析xml文件)
2016-08-11 10:53
531 查看
books类用来实现储存xml文件中数据结构
public class Books {
private String id;
private String name;
private String author;
private String year;
private String price;
private String language;
public Books() {
super();
}
public Books(String id, String name, String author, String year, String price, String language) {
super();
this.id = id;
this.name = name;
this.author = author;
this.year = year;
this.price = price;
this.language = language;
}
public String getId() {
return id;
}
public void setId(String 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;
}
public String getYear() {
return year;
}
public void setYear(String year) {
this.year = year;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
public String getLanguage() {
return language;
}
public void setLanguage(String language) {
this.language = language;
}
}
通过SAXParserHandler来实现xml文件的解析
运行结果:
public class Books {
private String id;
private String name;
private String author;
private String year;
private String price;
private String language;
public Books() {
super();
}
public Books(String id, String name, String author, String year, String price, String language) {
super();
this.id = id;
this.name = name;
this.author = author;
this.year = year;
this.price = price;
this.language = language;
}
public String getId() {
return id;
}
public void setId(String 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;
}
public String getYear() {
return year;
}
public void setYear(String year) {
this.year = year;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
public String getLanguage() {
return language;
}
public void setLanguage(String language) {
this.language = language;
}
}
通过SAXParserHandler来实现xml文件的解析
package handler; import java.util.ArrayList; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; import domTest.Books; public class SAXParserHandler extends DefaultHandler { public int bookindex = 0; public String value = null; public Books book = null; private ArrayList<Books> bookList = new ArrayList<Books>(); public ArrayList<Books> getBookList() { return bookList; } /** * 用来遍历xml文件的开始标签 */ @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { // 调用DefaultHandler类的startElement方法 super.startElement(uri, localName, qName, attributes); // 开始解析book元素的属性 if (qName.equals("book")) { bookindex++; // 创建一个book元素对象 book = new Books(); System.out.println("-----------------开始遍历第" + bookindex + "本书的内容-------------------"); // 已知book元素的属性名称,根据属性名称获取属性值 // String value = attributes.getValue("id"); // System.out.println("book的属性值是:"+value); // 不知道book元素下属性的名称以及个数,如何获取属性名以及属性值 int num = attributes.getLength(); for (int i = 0; i < num; i++) { System.out.print("book元素的第" + (i + 1) + "个属性名是:" + attributes.getQName(i)); System.out.println("-----属性值是:" + attributes.getValue(i)); if (attributes.getQName(i).equals("id")) { book.setId(attributes.getValue(i)); } } } else if ((!qName.equals("bookstore")) && (!qName.equals("book"))) System.out.print("节点名是:" + qName + "---节点值是:"); } /** * 用来标识解析开始 */ @Override public void startDocument() throws SAXException { super.startDocument(); System.out.println("SAX解析开始"); } /** * 用来遍历xml文件的结束标签 */ @Override public void endElement(String uri, String localName, String qName) throws SAXException { // 调用DefaultHandler类的endElement方法 super.endElement(uri, localName, qName); // 判断是否针对一本书已经遍历结束 if (qName.equals("book")) { bookList.add(book); book = null; System.out.println("-----------------结束遍历第" + bookindex + "本书的内容-------------------"); } else if (qName.equals("name")) { book.setName(value); } else if (qName.equals("author")) { book.setAuthor(value); } else if (qName.equals("year")) { book.setYear(value); } else if (qName.equals("price")) { book.setPrice(value); } else if (qName.equals("language")) { book.setLanguage(value); } } /** * 用来标识解析结束 */ @Override public void endDocument() throws SAXException { super.endDocument(); System.out.println("SAX解析结束"); } @Override public void characters(char[] ch, int start, int length) throws SAXException {// ch是xml文档的内容 super.characters(ch, start, length); value = new String(ch, start, length); if (!(value.trim().equals(""))) System.out.println(value); } }
运行结果:
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序