Java SAX解析xmlファイル
4683 ワード
XMLファイル:
http://sinye.iteye.com/blog/763895
<?xml version="1.0" encoding="UTF-8"?>
<persons>
<person id="1">
<name>1</name>
<age>22</age>
</person>
<person id="2">
<name>2</name>
<age>23</age>
</person>
</persons>
package xml.parse;
//person
public class Person {
private Integer id;
private String name;
private Short age;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Short getAge() {
return age;
}
public void setAge(Short age) {
this.age = age;
}
}
// person
package xml.parse;
import java.util.ArrayList;
import java.util.List;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class PersonDefaultHandler extends DefaultHandler {
private List<Person> persons;
private Person person; // person
private String tag;
/**
* 。
*/
@Override
public void startDocument() throws SAXException {
persons = new ArrayList<Person>();
}
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
if ("person".equals(localName)) {
Integer id = new Integer(attributes.getValue(0)); // id
person = new Person();
person.setId(id);
}
tag = localName;
}
/**
* : ch XML start XML length
*/
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
if (tag != null) {
String data = new String(ch, start, length);
if ("name".equals(tag)) {
person.setName(data);
} else if ("age".equals(tag)) {
person.setAge(new Short(data));
}
}
}
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
if ("person".equals(localName)) {
persons.add(person);
person = null;
}
tag = null;
}
public List<Person> getPersons() {
return persons;
}
}
//
package xml.parse;
import java.util.List;
import com.sun.org.apache.xerces.internal.parsers.SAXParser;
public class SAXPerson {
public static List<Person> getPerson() throws Exception {
SAXParser parser = (SAXParser) Class.forName(
"com.sun.org.apache.xerces.internal.parsers.SAXParser")
.newInstance();
PersonDefaultHandler handler = new PersonDefaultHandler();
parser.setContentHandler(handler);
parser.parse("D:\\person.xml");
//
// InputStream inStream = SAXPerson.class.getClassLoader()
// .getResourceAsStream("person.xml");
// SAXParserFactory factory = SAXParserFactory.newInstance();
// SAXParser saxParser = factory.newSAXParser();
// PersonDefaultHandler handler = new PersonDefaultHandler();
// saxParser.parse(inStream, handler);
// inStream.close();
//// InputStream inStream = new FileInputStream(new File("d:\\person.xml"));
// SAXParserFactory factory = SAXParserFactory.newInstance();
// SAXParser saxParser = factory.newSAXParser();
// PersonDefaultHandler handler = new PersonDefaultHandler();
// saxParser.parse(new File("person.xml"), handler);
//// inStream.close();
return handler.getPersons();
}
public static void main(String[] args) throws Exception {
System.out.println("dddddddddddd:"+getPerson().size());
for (int i = 0; i < getPerson().size(); i++) {
Person person = getPerson().get(i);
System.out.println("name:" + person.getName() + " age:"
+ person.getAge());
}
}
}
http://sinye.iteye.com/blog/763895