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

Bla*_*man -2 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);
      }
    }

   }

}
Run Code Online (Sandbox Code Playgroud)

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

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

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

更新

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

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

jta*_*orn 5

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