Android + saxParser endElement закончил цикл?

Как с помощью saxParser узнать, что endElement завершен? К сожалению, у меня довольно большой файл XML, и мне нужно сохранить все мои данные в ArrayList, прежде чем передавать их утилите InsertHelper. Как проверить, завершил ли saxParser цикл?

/**
 * Called when tag opening ( ex:- <name>AndroidPeople</name> -- <name> )
 */
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
    currentElement = true;

    if (localName.equals("StoreDetails")) {
        //Log.i("TAG", "Store Details");
        newKOPStoreVersion = attributes.getValue("stores_version");
        //if (!dBHelper.getStoreXMLVersion().equals(newKOPStoreVersion)) { BUT BACK
        Log.i("TAG", "Store Details Changed");
        isStoreDetailsVersionChanged = true;
        //dBHelper.deleteStoreDetail();
        //currentValue = "";
        //buffer = new StringBuffer();
        dBHelper.setStoreXMLVersion(newKOPStoreVersion);
        /*}
        else BUT PACK
        {
            Log.i("TAG", "no change for KOP store version");
            throw new KOPSAXTerminatorException();
        }*/
    }

}

/**
 * Called when tag closing ( ex:- <name>AndroidPeople</name> -- </name> )
 */
@Override
public void endElement(String uri, String localName, String qName) throws SAXException {

    currentElement = false;     

    //if (isStoreDetailsVersionChanged == true) { PUT BACK
    if (localName.equals("StoreID")) {
        buffer.toString().trim();
        storeDetails.setStoreId(buffer.toString());
    } else if (localName.equals("StoreName")) {
        buffer.toString().trim();
        storeDetails.setStoreName(buffer.toString());
    } else if (localName.equals("StoreDescription")) {
        buffer.toString().trim();
        storeDetails.setStoreDescription(buffer.toString());
    } else if (localName.equals("Location")) {
        buffer.toString().trim();
        storeDetails.setLocation(buffer.toString());
    } else if (localName.equals("Phonenumber")) {
        buffer.toString().trim();
        storeDetails.setPhoneNumber(buffer.toString());
    } else if (localName.equals("VisualmapID")) {
        buffer.toString().trim();
        storeDetails.setVisualMapId(buffer.toString());
    } else if (localName.equals("x")) {
        buffer.toString().trim();
        storeDetails.setCartX(buffer.toString());
    } else if (localName.equals("y")) {
        buffer.toString().trim();
        storeDetails.setCartY(buffer.toString());
    } else if (localName.equals("ClosestParkingLot")) {
        buffer.toString().trim();
        storeDetails.setClosestParkingLot(buffer.toString());
    } else if (localName.equals("RelatedCategory")) {
        buffer.toString().trim();
        storeDetails.setRelatedCategory(buffer.toString());
        //add buffer to arraylist - then loop array do the ih dance
        dataList.add(storeDetails);
//this is my arraylist and I'm attempting to loop over it outside of this class, but it seems to only contain the last value of the xml, not all the values.

    }

    buffer = new StringBuffer();

    //}
    if (localName.equals("StoreDetails")) {
        //Log.i("TAG","End StoreDetails");
        isStoreDetailsVersionChanged = false;
        //throw new KOPSAXTerminatorException();
    }
}

/**
 * Called to get tag characters ( ex:- <name>AndroidPeople</name> -- to get
 * AndroidPeople Character )
 */
@Override
public void characters(char[] ch, int start, int length) throws SAXException {
    if (currentElement) {
        buffer.append(ch, start, length);
        currentElement = false;
    }
}

Я могу отправить вам полный код, если вы хотите посмотреть на него.


person worked    schedule 08.04.2012    source источник
comment
есть метод конечного документа, который вы можете переопределить   -  person L7ColWinters    schedule 08.04.2012


Ответы (1)


Конечный документ вызывается, когда парсер SAX завершает работу. Все, что вам нужно сделать, это переопределить метод в вашем обработчике (тот же класс, в котором есть методы элемента.

 @Override
 public void endDocument() throws SAXException {

 }
person Zaid Daghestani    schedule 08.04.2012