0
点赞
收藏
分享

微信扫一扫

SAX解析xml文件

small_Sun 2022-09-21 阅读 94


SAX解析xml文件,将解析出来的结果放到一个bean中,再将所有的baen放到list列表中

例子程序的xml文件为:


1. <?xml version="1.0" encoding="UTF-8"?>
2. <书架>
3. <书>
4. <书名>海的女儿</书名>
5. <作者>安徒生</作者>
6. 50.0元</售价>
7. </书>
8. <书>
9. <书名>卖火柴的小女孩</书名>
10. <作者>安徒生</作者>
11. 28.0元</售价>
12. </书>
13. </书架>


需要一个book类,存放书的具体信息(书名,作者,售价)为:



1. package com.flower.parsexml;
2.
3.
4. public class Book {
5. private String name;
6. private String author;
7. private String price;
8. public String getName() {
9. return name;
10. }
11. public void setName(String name) {
12. this.name = name;
13. }
14. public String getAuthor() {
15. return author;
16. }
17. public void setAuthor(String author) {
18. this.author = author;
19. }
20. public String getPrice() {
21. return price;
22. }
23. public void setPrice(String price) {
24. this.price = price;
25. }
26.
27.
28. }



下面开始解析,代码如下:


1. package com.flower.parsexml;
2.
3. import java.io.IOException;
4. import java.util.ArrayList;
5.
6. import javax.xml.parsers.ParserConfigurationException;
7. import javax.xml.parsers.SAXParser;
8. import javax.xml.parsers.SAXParserFactory;
9.
10. import org.xml.sax.Attributes;
11. import org.xml.sax.SAXException;
12. import org.xml.sax.XMLReader;
13. import org.xml.sax.helpers.DefaultHandler;
14.
15. public class SAXparse {
16. @SuppressWarnings("unchecked")
17. public static void main(String[] args) throws ParserConfigurationException,
18. SAXException, IOException {
19. // 创建解析工厂
20. SAXParserFactory factory = SAXParserFactory.newInstance();
21. // 创建解析器
22. SAXParser parser = factory.newSAXParser();
23. // 得到读取器
24. XMLReader reader = parser.getXMLReader();
25. // 设置内容处理器
26. new BeanListHandler();
27. reader.setContentHandler(handler);
28. // 读取xml文档
29. "src/books.xml");
30. ArrayList list = handler.getBooks();
31. Book book;
32. for(int i = 0; i < list.size(); i++) {
33. new Book();
34. book = (Book) list.get(i);
35. System.out.println(book.getName() + book.getAuthor() + book.getPrice());
36. }
37.
38. }
39.
40. }
41.
42. class BeanListHandler extends DefaultHandler {
43. //将读取的内容存放到一个book对象中,存放到list集合中
44.
45. new ArrayList<Book>();
46. private String currentTag;
47. private Book book;
48.
49. @Override
50. public void startElement(String uri, String localName, String qName,
51. throws SAXException {
52. currentTag = qName;
53. if("书".equals(currentTag)) {
54. new Book();
55. }
56. }
57.
58. @Override
59. public void characters(char[] ch, int start, int length)
60. throws SAXException {
61. if("书名".equals(currentTag)) {
62. new String(ch,start,length);
63. book.setName(name);
64. }
65. if("作者".equals(currentTag)) {
66. new String(ch,start,length);
67. book.setAuthor(author);
68. }
69. if("售价".equals(currentTag)) {
70. new String(ch,start,length);
71. book.setPrice(price);
72. }
73. }
74.
75. @Override
76. public void endElement(String uri, String localName, String qName)
77. throws SAXException {
78. if("书".equals(qName)) {
79. list.add(book);
80. null;
81. }
82. null;
83. }
84.
85.
86. public ArrayList<Book> getBooks() {
87. return list;
88. }
89.
90.
91. }


 

运行结果为:




  1. 海的女儿安徒生50.0元
  2. 卖火柴的小女孩安徒生28.0元



 

举报

相关推荐

0 条评论