Java 为什么我的SAX处理程序返回一个没有值的对象?我把它调好了
我正在为xml编写SAX解析器,它返回的对象没有我在事件中设置的值 我的班级结构如下:Java 为什么我的SAX处理程序返回一个没有值的对象?我把它调好了,java,xml,spring,sax,Java,Xml,Spring,Sax,我正在为xml编写SAX解析器,它返回的对象没有我在事件中设置的值 我的班级结构如下: public class ProductSAXHandler extends DefaultHandler { private Product product; public ProductSAXHandler() { product = new Product(); } public Product ParseXmlFile(String xml) { SAXPa
public class ProductSAXHandler extends DefaultHandler {
private Product product;
public ProductSAXHandler() {
product = new Product();
}
public Product ParseXmlFile(String xml) {
SAXParserFactory spf = new ...
XMLReader parser = ....
parser.parse(xml);
return product;
}
public void StartElement(....) {
for(int ...) { // looping through attributes
if(qName == "description" && name == "sku") {
product.setSKU(value);
}
}
}
}
当我处于调试模式时,product的值会被设置,我可以看到product的sku字段具有正确的值
但是由于某种原因,返回的product
对象只是一个新的产品对象,在解析过程中没有设置任何值
我做错了什么?一定是我不明白这些事件是如何发生的
更新
非常奇怪,在集合中的if语句中,属性的值正确地指向产品类的SKU字段,但当我在ParseXMLFile中返回产品对象时,SKU字段为null
我猜回调是在不同的时间触发的,那么我该如何正确返回???无论您认为您在做什么,不要将字符串与“==”进行比较,使用
equals()
我在ParseXmlFile()
中没有看到返回语句。这是==vs.equals()事情又发生了?@OliCharlesworth我忘了在问题中写那个,但我有那个。@SkipHead不,就像我说的,当我处于调试模式时,它会转到行并正确设置SKU。你是否考虑过使用JAXB将XML转换为对象,而不是自己做。有多个实现可用,其中一个包含在JavaSE6中。