Разбор XML-потока в Android - PullRequest
       4

Разбор XML-потока в Android

1 голос
/ 20 февраля 2012

Не знаю почему, но Log.i (TAG, "найдено:" + найдено); возвращает ноль для "найденного" элемента в моем XML, который я получаю в потоке. Я отладил, и кажется, что мой корневой элемент XML читается, но элементы этого корневого элемента нет. urlString также правильно. Документ анализируется без каких-либо ошибок и исключений. Но в этой строке

NodeList nl = docEle.getElementsByTagName("found");
        found = nl.item(0).getNodeValue();

найдено, является нулем. Это полный код метода:

protected Void doInBackground(String... urls) {

        String urlString = urls[0];
        URL documentUrl = null;
        InputStream stream = null;
        URLConnection conn = null;
        DocumentBuilder builder = null;
        Document document = null;
        try {
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            builder = factory.newDocumentBuilder();

            documentUrl = new URL(urlString);
            conn = documentUrl.openConnection();
            stream = conn.getInputStream();
            document = builder.parse(stream);
        } 
        catch (IOException e) {
            Error = e.getMessage();
            Log.i(TAG, "Exception!", e);
        } 
        catch (SAXException e) {
            Error = e.getMessage();
            Log.i(TAG, "Exception!", e);
        }
        catch (ParserConfigurationException e) {
            Error = e.getMessage();
            Log.i(TAG, "Exception!", e);
        }
        finally 
        {
            if (stream != null)
            {
                try {
                    stream.close();
                } catch (IOException e) {
                    Error = e.getMessage();
                    Log.i(TAG, "Exception!", e);
                }
            }
        }

        /*NodeList nodes = document.getElementsByTagName("found");
        for (int i = 0; i < nodes.getLength(); i++) {
            found = nodes.item(i).getNodeValue();
            //System.out.println(found);
            Log.i(TAG, "found: "+found);
        }*/

        //get the root element
        Element docEle = document.getDocumentElement();
        NodeList nl = docEle.getElementsByTagName("found");
        found = nl.item(0).getNodeValue();
        Log.i(TAG, "found: "+found);

        return null;
    }

Это моя urlString с XML: http://basa.med -info.ru / xse / index.php? Query =% E3% F0% E8% EF% EF & nres = 20

найдено должно быть равно 20.

1 Ответ

2 голосов
/ 20 февраля 2012

Использование:

found = nl.item(0).getFirstChild().getNodeValue();
...