Получение XML выполняется в течение 5 часов - PullRequest
0 голосов
/ 08 января 2012

Я получаю 360 КБ данных с сервера, который я преобразую в файл XML на моем телефоне. Конечный файл составляет около 1,3 Мб. Позже я пытаюсь прочитать этот файл и на моем GT-S5660, и этот процесс длится 5 (!) Часов. Хотя это дает правильный результат, мне интересно, есть ли способ оптимизировать этот процесс. У меня есть его версия для iPhone, и там процесс завершается менее чем за 5 секунд. Это нормальное поведение? Если это так, будет ли SQLIte альтернативой? Вот мой код:

FileInputStream fileos;
    try {
        fileos = openFileInput("TarifsCache" + Constants.VERSION + ".txt");
    } catch (FileNotFoundException e) {
        return;
    }
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    DocumentBuilder db;
    try {
        db = dbf.newDocumentBuilder();
    } catch (ParserConfigurationException e) {
        return;
    }
    Document doc;
    try {
        doc = db.parse(new InputSource(fileos));
    } catch (SAXException e) {
        return;
    } catch (IOException e) {
        return;
    }
    doc.getDocumentElement().normalize();

    for (int i = 0;; i++) {

        NodeList nodeList = doc.getElementsByTagName("Cache" + i);

        Node node = nodeList.item(0);
        if (node == null)
            break;
        Element fstElmnt = (Element) node;

        NodeList nameList = fstElmnt.getElementsByTagName("area_ref");
        Element nameElement = (Element) nameList.item(0);
        nameList = nameElement.getChildNodes();
        tarifread.area_ref = Integer.parseInt(((Node) nameList.item(0))
                .getNodeValue());

сопровождается множеством других поисков элементов.

1 Ответ

0 голосов
/ 10 января 2012


Попробуйте использовать расширенный парсер, такой как SAX, и не используйте STAX, поскольку он не поддерживается в Android.

...