使用SAX解释:
import java.io.IOException;
import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; public class XmlSax { public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException { // TODO Auto-generated method stub SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser parse = factory.newSAXParser(); PHandler handler = new PHandler(); parse.parse(Thread.currentThread().getContextClassLoader().getResourceAsStream(“com/leon/p.xml”), handler); } } class PHandler extends DefaultHandler{ @Override public void startDocument() throws SAXException { System.out.println(“——文档解释开始——“); } @Override public void endDocument() throws SAXException { System.out.println(“——文档解释结束——“); } @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { System.out.println(qName + “->解释开始” ); } @Override public void endElement(String uri, String localName, String qName) throws SAXException { System.out.println(qName + “->解释结束” ); } @Override public void characters(char[] ch, int start, int length) throws SAXException { String msg = new String(ch, start, length).trim(); if(msg.length() > 0) { System.out.println(“内容为:” + msg); }else { System.out.println(“内容为:” + “空”); } }
}
结果
数据处理:
```java public class XmlSax { public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException { // TODO Auto-generated method stub SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser parse = factory.newSAXParser();
PHandler handler = new PHandler();
parse.parse(Thread.currentThread().getContextClassLoader().getResourceAsStream("com/leon/p.xml"), handler);
List<Person> list = handler.getList();
System.out.println(list.size());
for(Person p : list) {
System.out.println(p.getName() + "-->" + p.getAge());
}
}
}
>
>
>
> ```java
class PHandler extends DefaultHandler{
private List<Person> list;
private Person person;
private String tag;
@Override
public void startDocument() throws SAXException {
list = new ArrayList<Person>();
}
@Override
public void endDocument() throws SAXException { }
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
if(qName.equals("person")) {
person = new Person();
}
if(qName.equals("name")) {
tag = "name";
}
if(qName.equals("age")) {
tag = "age";
}
}
@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
if(qName.equals("person")) {
list.add(person);
}
tag = null;
}
@Override
//读取标签之间的内容,不管标签是否一一对应
public void characters(char[] ch, int start, int length) throws SAXException {
String msg = new String(ch, start, length).trim();
if(tag != null) {
if(tag.equals("name")) {
person.setName(msg);
//System.out.println("name =" + msg);
}
if(tag.equals("age")) {
person.setAge(Integer.valueOf(msg));
//System.out.println("age = "+ msg);
}
}
}
public List<Person> getList() {
return list;
}
}
结果