我正在为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字段为空。
我猜回调是在不同的时间点火,我怎么想正确回归呢?
答案 0 :(得分:5)
无论您认为自己在做什么,都不要将字符串与“==”进行比较,请使用equals()
。