Java 为什么我的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

我正在为xml编写SAX解析器,它返回的对象没有我在事件中设置的值

我的班级结构如下:

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中。