package com.bjsxt.dom;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class BookDefaultHandler extends DefaultHandler {
//重写1
/**解析xml文档开始时调用*/
@Override
public void startDocument() throws SAXException {
super.startDocument();
System.out.println("解析xml开始");
}
/**解析xml文档结束时调用*/
@Override
public void endDocument() throws SAXException {
super.endDocument();
System.out.println("解析结束");
}
/**解析xml中节点时调用*/
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
super.startElement(uri, localName, qName, attributes);
// System.out.println("解析xml中节点时调用");
//判断如果是book节点,就获取节点的属性和属性值
if ("book".equals(qName)){
//获取所有属性
int count = attributes.getLength();//=个数
for (int i = 0;i < count ;i++){
String attName = attributes.getQName(i);
String attValue = attributes.getValue(i);
System.out.println("属性名称:"+attName+"\t值为:"+attValue);
}
}else if (!"book".equals(qName) && !"books".equals(qName)){
System.out.println("节点名称:"+qName);
}
}
/**解析xml中节点结束时调用*/
@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
super.endElement(uri, localName, qName);
//System.out.println("解析xml中节点结束时调用");
}
@Override
public void characters(char[] ch, int start, int length) throws SAXException {
super.characters(ch, start, length);
String value = new String(ch, start, length);
if ("".equals(value.trim())){
System.out.println(value);
}
}
}
在这个重写的characters里面,我的这个value并没有值,并且还是有空白。这是什么原因呢?
