微科社区,轻松开发从此开始! 请登陆 免费注册

微科社区

当前位置:首页 > Java平台 > J2SE >

关于SAX解析中字符串比较(如:tagName.equals("

时间:2014-04-14 09:57  浏览:努力统计中...
最后面characters方法中,注释过的那段代码会出现NullPointerException异常,感觉它上面和那段没注释的代码差不多啊,为什么会报错?求解 classSAXHandleextendsDefaultHandler{ privateListEmployeelist; p
最后面characters方法中,注释过的那段代码会出现NullPointerException异常,感觉它上面和那段没注释的代码差不多啊,为什么会报错?求解
class SAXHandle extends DefaultHandler {
private List<Employee> list;
private String tagName;
Employee emp = null;

public SAXHandle(List<Employee> list) {
this.list = list;
}

@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
if (qName.equals("emp")) {
emp = new Employee();
emp.setId(attributes.getValue("id"));
list.add(emp);
tagName = qName;
} else if (qName.equals("name") || qName.equals("age")
|| qName.equals("dept") || qName.equals("intro")
|| qName.equals("fav")) {
tagName = qName;
}
}

@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
tagName = null;
}

@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
String value = new String(ch, start, length);

if ("name".equals(tagName)) {
emp.setName(value);
} else if ("age".equals(tagName)) {
emp.setAge(value);
} else if ("dept".equals(tagName)) {
emp.setDept(value);
} else if ("intro".equals(tagName)) {
emp.setIntro(value);
} else if ("fav".equals(tagName)) {
emp.setFav(value);
}

// if (tagName.equals("name")) {
// emp.setName(value);
// System.out.println("value = " + value);
// } else if (tagName.equals("age")) {
// emp.setAge(value);
// System.out.println("value = " + value);
// } else if (tagName.equals("dept")) {
// emp.setDept(value);
// System.out.println("value = " + value);
// } else if (tagName.equals("intro")) {
// emp.setIntro(value);
// System.out.println("value = " + value);
// } else if (tagName.equals("fav")) {
// emp.setFav(value);
// System.out.println("value = " + value);
// }

}

}


如果前面的对象为空,那么equals这个方法都是不存在的。
如果前面是字符串,那就不存在这个问题了。



关键就是那个tagName不为空,用打印语句是可以打印出值来的。。。



关键就是那个tagName不为空,用打印语句是可以打印出值来的。。。
如果不为空是不应该报空指针错的。
你多确认下吧。



关键就是那个tagName不为空,用打印语句是可以打印出值来的。。。
如果不为空是不应该报空指针错的。
你多确认下吧。

你说的是对的,我刚又仔细看了一下,大意了。。。
    顶一下
    (0)
    0%
    踩一下
    (0)
    0%
    ------分隔线------