为什么我的SAX处理程序返回没有值的对象?我设置得很好

时间:2011-11-28 00:07:19

标签: java xml spring sax

我正在为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);
      }
    }

   }

}

当我处于调试模式时,产品的值确实已设置,我可以看到产品的sku字段具有正确的值。

但由于某种原因,返回的product对象只是一个新的Product对象,在解析过程中没有设置值。

我在这里做错了什么?一定是我不理解这些事件是如何被解雇的等等。

更新

非常奇怪,在我的if语句中,set的属性值正确地指向了我的产品类的SKU字段,但是当我在ParseXMLFile中返回产品对象时,SKU字段为空。

我猜回调是在不同的时间点火,我怎么想正确回归呢?

1 个答案:

答案 0 :(得分:5)

无论您认为自己在做什么,都不要将字符串与“==”进行比较,请使用equals()