Я пишу SAX-парсер для xml, и возвращаемый объект не имеет значений, которые я устанавливаю в событиях.
Моя структура классов выглядит следующим образом:
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 имеет значение null.
Я полагаю, что обратные вызовы запускаются в разное время , как я должен вернутьправильно тогда ??