【发布时间】:2011-06-01 20:15:51
【问题描述】:
我正在做一个项目来解析 XML 中的一些数据。
例如,XML 是
<abc>abcdefghijklmno</abc>
我需要解析“abcdefghijkmnlp”。
但是当我测试我的解析时,我发现了一个大问题:
public class parser{
private boolean hasABC = false;
//Constructor HERE
......................
......................
@Override
public void startDocument () throws SAXException{
}
@Override
public void endDocument () throws SAXException{
}
@Override
public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException{
if ("abc".equalsIgnoreCase(localName)) {
this.hasABC = true;
}
}
@Override
public void endElement(String namespaceURI, String localName, String qName) throws SAXException{
if ("abc".equalsIgnoreCase(localName)) {
this.hasABC = false;
}
}
@Override
public void characters(char ch[], int start, int length){
String content = new String(ch, start, length).trim();
if(this.hasABC){
System.out.println("ABC = " + content);
}
}
}
我发现解析器已经对标签进行了两次解析 系统打印出来的是,
ABC = abcdefghi
ABC = jklmno
为什么解析器会自动回调 characters() 两次????
XML 是否有一些“\n”或“\r”???
【问题讨论】: