Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
johnsnow91
0 / 0 / 0
Регистрация: 22.01.2013
Сообщений: 15
#1

Парсинг xml из файла на сервере - Программирование Android

05.04.2013, 13:11. Просмотров 1336. Ответов 4
Метки нет (Все метки)

Добрый день! Есть код, который по идее парсит данные из xml файла, но почему-то не отображается ничего на экране. Где-то ошибка, помогите разобраться, пожалуйста.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package com.androidbook.download;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
 
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
 
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
 
import android.app.Activity;
import android.os.Bundle;
 
 
public class MainActivity extends Activity {
    public  Document getDocument(String url) 
            throws MalformedURLException, IOException, Exception {
        URL documentUrl = new URL(url);
        URLConnection conn = documentUrl.openConnection();
 
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();
        Document document;
        InputStream stream = null;
        try {
         stream = conn.getInputStream();
         document = builder.parse(stream);
        } finally {
         if (stream != null) stream.close();
        }
        return document;
        }
    
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        try
        { 
            Document doc = getDocument("localhost/files/allscores.xml");
            NodeList nodes = doc.getElementsByTagName("scores");
            if(nodes.getLength()>0)
            {
                Node node = nodes.item(0);
                NodeList childs=node.getChildNodes();
                for(int i=0; i<childs.getLength(); i++)
                {
                
                    Node child = childs.item(i);
                    String nodeName = childs.item(i).getNodeName();
                    if(nodeName!=null&&nodeName.equals("score")){
                        System.out.println(childs.item(i).getAttributes().equals("rank"));
                        System.out.println(childs.item(i).getAttributes().equals("score"));
                    }                      
                }
            }
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e2) {
            // TODO Auto-generated catch block
            e2.printStackTrace();
        } catch (Exception e3) {
            // TODO Auto-generated catch block
            e3.printStackTrace();
        }
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.04.2013, 13:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Парсинг xml из файла на сервере (Программирование Android):

Парсинг xml-файла - Программирование Android
Пытаюсь получить информацию из xml файла, но всегда получаю ошибку. Как это можно исправить? /res/xml/support.xml &lt;?xml...

Парсинг XML - Программирование Android
Нужно роспарсить XML, который приходть с http://shop.podolyany.com.ua/api/rest/products/. Наверное делаю что-то не так. Вот код, где я хочу...

Парсинг XML - Программирование Android
Пробую так String data = getIntent().getStringExtra(&quot;data&quot;); try { DocumentBuilderFactory factory =...

Парсинг XML - Программирование Android
try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder =...

Парсинг XML - Программирование Android
Решил освоить Android написал первое приложение(программка расшифровывает статус контролера банкомата из БД ошибок в формате SQLite и...

Парсинг XML на АНДРОИД - Программирование Android
Суть приложения - парсит XML файл с сервера ( извлекает значение тега &lt;bid&gt;). Выводит это значение в текстовое поле. В процесе отладки...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
05.04.2013, 14:17 #2
подебагайте.
johnsnow91
0 / 0 / 0
Регистрация: 22.01.2013
Сообщений: 15
05.04.2013, 15:51  [ТС] #3
Я выяснил, что это нужно запускать в asyncTask, сделал кнопочку и запустил, но по нажатию кнопки так ничего и не происходит.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
public class MainActivity extends Activity {
    Button runButt;
    final static String xmlurl="http://topazelectro.ru/files/allscores.xml";
    
    public  Document getDocument(String url) 
            throws MalformedURLException, IOException, Exception {
        URL documentUrl = new URL(url);
        URLConnection conn = documentUrl.openConnection();
 
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();
        Document document;
        InputStream stream = null;
        try {
         stream = conn.getInputStream();
         document = builder.parse(stream);
        } finally {
         if (stream != null) stream.close();
        }
        return document;
        }
    
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        loadViews();
        
    }
    private void loadViews(){
        runButt = (Button)findViewById(R.id.runbutt);
    }
    
     public void runButtonHandler(View button){
            if(button.getId() == R.id.runbutt)
                new downloadXmlTask().execute(xmlurl);
        }
     class downloadXmlTask extends AsyncTask<String, Void, xml> {
 
        @Override
        protected xml doInBackground(String... params) {
            try
            { 
                Document doc = getDocument("http://topazelectro.ru/files/allscores.xml");
                NodeList nodes = doc.getElementsByTagName("scores");
                if(nodes.getLength()>0)
                {
                    Node node = nodes.item(0);
                    NodeList childs=node.getChildNodes();
                    for(int i=0; i<childs.getLength(); i++)
                    {
                    
                        Node child = childs.item(i);
                        String nodeName = childs.item(i).getNodeName();
                        if(nodeName!=null&&nodeName.equals("score")){
                            System.out.println(childs.item(i).getAttributes().equals("rank"));
                            System.out.println(childs.item(i).getAttributes().equals("score"));
                        }                      
                    }
                }
            } catch (MalformedURLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e2) {
                // TODO Auto-generated catch block
                e2.printStackTrace();
            } catch (Exception e3) {
                // TODO Auto-generated catch block
                e3.printStackTrace();
            }
            return null;
        }
     }
}
lifestyle
Mobile Developer
232 / 228 / 4
Регистрация: 10.05.2009
Сообщений: 917
06.04.2013, 01:38 #4
а дебагерром пройтись по doInBackground не пробовали?? скорее всего где-то вылетает
например тут if(nodes.getLength()>0)
или тут for(int i=0; i<childs.getLength(); i++)
или тут if(nodeName!=null&&nodeName.equals("score"))
или вообще exception вылетает?!
в logcat'e ничего нету интересного?!
johnsnow91
0 / 0 / 0
Регистрация: 22.01.2013
Сообщений: 15
06.04.2013, 13:32  [ТС] #5
Цитата Сообщение от lifestyle Посмотреть сообщение
а дебагерром пройтись по doInBackground не пробовали?? скорее всего где-то вылетает
например тут if(nodes.getLength()>0)
или тут for(int i=0; i<childs.getLength(); i++)
или тут if(nodeName!=null&&nodeName.equals("score"))
или вообще exception вылетает?!
в logcat'e ничего нету интересного?!
Стыдно признаться, но я совсем новичек и дебажить нифига не умею в эклипсе( Да и ява для меня очень новый язык. Если не трудно, подробней объясните как продебажить проект. Ей богу, не могу понять, как в эклипсе это делать. Логкэт ничего не показывает, как ни странно.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.04.2013, 13:32
Привет! Вот еще темы с ответами:

Парсинг XML по URL - Программирование Android
Нужно взять строку из тега &lt;company&gt; отсюда xml. Можно как-то обойтись без циклов?

Парсинг большого xml - Программирование Android
Если есть большой JSON его можно парсить при помощи библиотеки gson, а если есть большой xml как этот https://lenta.ru/rss. Чем его лучше...

XML HTTP парсинг - Программирование Android
Здравствуйте. На сервере есть тестовый php файл с сontent-type: text/xml. Он выводит сообщения с базы....

XML Парсинг (yml) - Программирование Android
Вопрос таков. Чем распарсить yml страницу http://ufa.farfor.ru/getyml/?key=ukAXxeJYZN Парсил XML с другого сайта, но таким образом не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
06.04.2013, 13:32
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru