我认为它只读取元素内的所有内容,因为我只是在网上按照一个例子......
公共抽象类 DefaultElementHandler 扩展 DefaultHandler{ 私有布尔开始;私有字符串标签名;私有 StringBuilder sBuilder;
public DefaultElementHandler(String tagName) {
this.tagName = tagName;
this.begin = false;
this.sBuilder = new StringBuilder();
}
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
if (qName.equals(tagName)||begin){
sBuilder.append("<");
sBuilder.append(qName);
sBuilder.append(" ");
int attrCount = attributes.getLength();
for (int i=0; i<attrCount; i++) {
sBuilder.append(attributes.getQName(i));
sBuilder.append("=\"");
sBuilder.append(attributes.getValue(i));
sBuilder.append("\" ");
}
sBuilder.append(">");
begin = true;
}
}
public void characters(char[] ch, int start, int length) throws SAXException{
StringBuilder sb = new StringBuilder();
for(int i=0; i < length; i++) {
sb.append(convertSpecialChar(ch[start+i]));
}
String text = sb.toString().trim();
//String text = new String(convertSpecialChar(ch), start, length);
if (text.trim().equals("")) return;
if (begin) sBuilder.append(text);
}
public void endElement(String uri, String localName, String qName) throws SAXException {
String stag = "</" + tagName + ">";
String ntag = "</" + qName + ">";
if (stag.equals(ntag) || begin) {
sBuilder.append(ntag);
if (stag.equals(ntag)) {
begin = false;
try {
Document doc = DocumentHelper.parseText(sBuilder.toString());
Element element = doc.getRootElement();
this.processElement(element);
} catch (DocumentException e) {
e.printStackTrace();
System.exit(1);
}
sBuilder.setLength(0);
}
}
}