- 首先新建一个类继承自
DefaultHandler
public class ContentHandle extends DefaultHandler {
private String nodeName;
private StringBuilder id;
private StringBuilder name;
private StringBuilder version;
/***
* startDocument() 方法会在开始XML解析的时候调用,
* startElement() 方法会在开始解析某个节点的时候调用,
* characters() 方法会在获取节点中内容的时候调用,
* endElement() 方法会在完成解析某个节点的时候调用,
* endDocument() 方法会在完成整个XML解析的时候调用。
* 其中,startElement()、characters() 和endElement() 这3个方法是有参数的,从XML中解析出的数据就会以参
* 数的形式传入到这些方法中。需要注意的是,在获取节点中的内容时,characters() 方法可
* 能会被调用多次,一些换行符也被当作内容解析出来,我们需要针对这种情况在代码中做好控
* 制
* @throws SAXException
*/
@Override
public void startDocument() throws SAXException {
id = new StringBuilder();
name = new StringBuilder();
version = new StringBuilder();
}
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
// 记录当前节点名
nodeName = localName;
}
@Override
public void characters(char[] ch, int start, int length) throws SAXException {
// 根据当前的节点名判断将内容添加到哪一个StringBuilder对象中
if ("id".equals(nodeName)) {
id.append(ch, start, length);
} else if ("name