博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA两种XML解析方式 SAX和DOM
阅读量:7163 次
发布时间:2019-06-29

本文共 5069 字,大约阅读时间需要 16 分钟。

Person实体类:

1 package com.icss.bean;  2  3 public class Person {
4 private int id; 5 private String name; 6 private int age; 7 public int getId() {
8 return id; 9 } 10 public void setId(int id) {
11 this.id = id; 12 } 13 public String getName() {
14 return name; 15 } 16 public void setName(String name) {
17 this.name = name; 18 } 19 public int getAge() {
20 return age; 21 } 22 public void setAge(int age) {
23 this.age = age; 24 } 25 public Person(int id, String name, int age) {
26 super(); 27 this.id = id; 28 this.name = name; 29 this.age = age; 30 } 31 public Person() {
32 super(); 33 } 34 @Override 35 public String toString() {
36 return "id="+id+" name="+name+" age="+age; 37 } 38 39 40 41 }

SAX解析方式  SAX帮助类:

1 package com.icss.biz;  2  3 import java.lang.reflect.Method;  4 import java.util.ArrayList;  5 import java.util.List;  6  7 import org.xml.sax.Attributes;  8 import org.xml.sax.SAXException;  9 import org.xml.sax.helpers.DefaultHandler; 10 11 import com.icss.bean.Person; 12 13 public class SaxHelper
extends DefaultHandler {
14 private List
list; 15 private Person p; 16 String nameflag; 17 18 19 public List
getList() {
20 return this.list; 21 } 22 23 @Override 24 public void startDocument() throws SAXException {
25 this.list = new ArrayList
(); 26 } 27 28 @Override 29 public void endDocument() throws SAXException {
30 } 31 32 @Override 33 public void startElement(String uri, String localName, String qName, 34 Attributes attributes) throws SAXException {
35 if (qName.equals("person")) {
36 p = new Person(); 37 p.setId(new Integer(attributes.getValue("id"))); 38 } 39 this.nameflag=qName; 40 } 41 42 @Override 43 public void endElement(String uri, String localName, String qName) 44 throws SAXException {
45 if (qName.equals("person")) {
46 if (p != null) {
47 list.add(p); 48 } 49 } 50 nameflag=""; 51 } 52 53 @Override 54 public void characters(char[] ch, int start, int length) 55 throws SAXException {
56 if(nameflag.equals("name")){
57 p.setName(new String(ch,start,length)); 58 }else if(nameflag.equals("age")){
59 p.setAge(new Integer(new String(ch,start,length))); 60 } 61 62 } 63 64 65 }

两种解析方法   业务类:

1 package com.icss.biz;  2  3 import java.io.File;  4 import java.io.FileInputStream;  5 import java.io.FileNotFoundException;  6 import java.io.IOException;  7 import java.io.InputStream;  8 import java.util.ArrayList;  9 import java.util.List; 10 11 import javax.xml.parsers.DocumentBuilder; 12 import javax.xml.parsers.DocumentBuilderFactory; 13 import javax.xml.parsers.ParserConfigurationException; 14 import javax.xml.parsers.SAXParser; 15 import javax.xml.parsers.SAXParserFactory; 16 17 import org.w3c.dom.Document; 18 import org.w3c.dom.Element; 19 import org.w3c.dom.Node; 20 import org.w3c.dom.NodeList; 21 import org.xml.sax.SAXException; 22 23 import com.icss.bean.Person; 24 25 public class XMLParseBiz {
26 InputStream inputstream =null; 27 28 public XMLParseBiz(String xmlpath){
29 try {
30 File f = new File(xmlpath); 31 this.inputstream =new FileInputStream(f); 32 } catch (FileNotFoundException e) {
33 e.printStackTrace(); 34 } 35 } 36 /** 37 * 通过DOM方法解析XML文件 38 * @param inputstream 39 * @return 40 * @throws ParserConfigurationException 41 * @throws IOException 42 * @throws SAXException 43 */ 44 public List
domParseXML( ) throws ParserConfigurationException, SAXException, IOException{
45 List
list = new ArrayList
(); 46 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 47 DocumentBuilder builder = factory.newDocumentBuilder(); 48 Document doc = builder.parse(this.inputstream); 49 Element root = doc.getDocumentElement(); 50 51 NodeList personnodes =root.getElementsByTagName("person"); 52 for(int i=0;i
saxParseXML( ) throws SAXException, IOException, ParserConfigurationException{
81 SAXParserFactory factory = SAXParserFactory.newInstance(); 82 SAXParser parser =factory.newSAXParser(); 83 84 SaxHelper helper = new SaxHelper(); 85 parser.parse(this.inputstream, helper); 86 87 return helper.getList(); 88 } 89 }

转载于:https://www.cnblogs.com/bianguai/archive/2011/10/12/2208449.html

你可能感兴趣的文章