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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 52, средняя оценка - 4.85
LukeSkywalker
0 / 0 / 0
Регистрация: 08.05.2012
Сообщений: 16
#1

Парсинг XML документа по URL - Программирование Android

10.12.2012, 17:57. Просмотров 6637. Ответов 5
Метки нет (Все метки)

Нужно пропарсить XML документ: http://qps.ru/7UzLc
Как я понимаю, есть три варианта:
1) скачать документ на флешку и тогда парсить;
2) напрямую в парсер;
3) в стринг-перменную, а потом её парсить.
Вот сам парсер (DOM):
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
// XML-parser and output.
                try {
                    DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
                    DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
                    //Document doc = docBuilder.parse(new File("/mnt/sdcard/download/weather.ashx.xml"));
                    Document doc = docBuilder.parse(new URL("http://free.worldweatheronline.com/feed/weather.ashx?q=Kijew&format=xml&num_of_days=3&key=c17b22aeea083658120612").openStream());         
 
                    // Normalize text representation.
                    doc.getDocumentElement ().normalize ();
                    //
                    NodeList listOfPersons = doc.getElementsByTagName("request");
 
                    for(int s=0; s<listOfPersons.getLength() ; s++){
                        Node firstPersonNode = listOfPersons.item(s);
                        if(firstPersonNode.getNodeType() == Node.ELEMENT_NODE){
                            Element firstPersonElement = (Element)firstPersonNode;
                            //----
                            NodeList firstNameList = firstPersonElement.getElementsByTagName("query");
                            Element firstNameElement = (Element)firstNameList.item(0);
                            NodeList textFNList = firstNameElement.getChildNodes();
                            
                            textView1.setText("City: " + 
                                   ((Node)textFNList.item(0)).getNodeValue().trim());                           
                        }
                    }
                }catch (SAXParseException err) {
                textView2.setText("** Parsing error" + ", line " 
                     + err.getLineNumber () + ", uri " + err.getSystemId ());
                textView2.setText(" " + err.getMessage ());
 
                }catch (SAXException e) {
                Exception x = e.getException ();
                ((x == null) ? e : x).printStackTrace ();
 
                }catch (Throwable t) {
                t.printStackTrace ();
                }
                //System.exit (0);
            }           
                                                    
        };
В коде использован второй вариант: напрямую в парсер, но ничего не происходит.
Опыта у меня мало, сколько не пробовал сделать по примерам из интернета, так и ничего не получилось. Помогите, пожалуйста! Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.12.2012, 17:57     Парсинг XML документа по URL
Посмотрите здесь:

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

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

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

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

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

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

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

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

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

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

Парсинг XML с помощью Jsoup - Программирование Android
Всем добрый день. Пишу андроид приложение. Использую библиотеку jsoup. Возникла проблема с парсингом xml. Есть такой кусок на...

Парсинг xml из файла на сервере - Программирование Android
Добрый день! Есть код, который по идее парсит данные из xml файла, но почему-то не отображается ничего на экране. Где-то ошибка, помогите...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
flashok
86 / 88 / 1
Регистрация: 14.02.2009
Сообщений: 293
11.12.2012, 18:07     Парсинг XML документа по URL #2
вот вам пример http://stackoverflow.com/questions/8...android-device
LukeSkywalker
0 / 0 / 0
Регистрация: 08.05.2012
Сообщений: 16
11.12.2012, 20:28  [ТС]     Парсинг XML документа по URL #3
Спасибо за наводку, только вот там
Java
1
phoneNumberList.add(line.getTextContent());
- это тэги к стринговой переменной добавляются? Как мне сделать, чтобы тэгы добавлялись в TextView?
flashok
86 / 88 / 1
Регистрация: 14.02.2009
Сообщений: 293
12.12.2012, 11:40     Парсинг XML документа по URL #4
ну вот выдрал из соседней темы
помойму все понятно

TextView resultingDate = (TextView) findViewById(R.id.resultingDate);
resultingDate.setText("lol");
LukeSkywalker
0 / 0 / 0
Регистрация: 08.05.2012
Сообщений: 16
12.12.2012, 19:19  [ТС]     Парсинг XML документа по URL #5
Ну у меня практически тоже самое:
Java
1
2
textView1 = (TextView) findViewById(R.id.textView1);
textView1.setText(line.getTextContent());
Но ничего не происходит!

Вот, можете проверить, если не верите:
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
74
75
76
77
78
79
80
package com.example.coursework;
 
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.Element;
import org.w3c.dom.NodeList;
 
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
 
public class MainActivity extends Activity {
    
    TextView textView1;
    TextView textView2;
    Button btnRfrsh;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        // Finding new objects.
        textView1 = (TextView) findViewById(R.id.textView1);
        textView2 = (TextView) findViewById(R.id.textView2);
        btnRfrsh = (Button) findViewById(R.id.btnRfrsh);
        
        // Handler of Refresh button press.
        OnClickListener oclbtnRfrsh = new OnClickListener() {       
            @Override
            public void onClick(View v) {
                
                try {
                    URL url = new URL("http://free.worldweatheronline.com/feed/weather.ashx?q=Kijew&format=xml&num_of_days=3&key=c17b22aeea083658120612");
                    URLConnection conn = url.openConnection();
 
                    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
                    DocumentBuilder builder = factory.newDocumentBuilder();
                    Document doc = builder.parse(conn.getInputStream());
 
                    NodeList nodes = doc.getElementsByTagName("request");
                    for (int i = 0; i < nodes.getLength(); i++) {
                        Element element = (Element) nodes.item(i);
                        NodeList title = element.getElementsByTagName("city");
                        Element line = (Element) title.item(0);
                        //phoneNumberList.add(line.getTextContent());
                        textView1.setText(line.getTextContent());
                    }
                }
                catch (Exception e) {
                    e.printStackTrace();
                }               
 
            }           
                                                    
        };
        
        // Assign handler to Refresh button.
        btnRfrsh.setOnClickListener(oclbtnRfrsh);
        
    }
 
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
    
}
XML
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
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >
 
    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="14dp"
        android:layout_marginTop="24dp"
        android:text="Small Text"
        android:textAppearance="?android:attr/textAppearanceSmall" />
 
    <Button
        android:id="@+id/btnRfrsh"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView1"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="25dp"
        android:text="Button" />
 
    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/btnRfrsh"
        android:layout_marginLeft="76dp"
        android:layout_toRightOf="@+id/btnRfrsh"
        android:text="Small Text"
        android:textAppearance="?android:attr/textAppearanceSmall" />
 
</RelativeLayout>
YAUHEN
146 / 128 / 6
Регистрация: 29.07.2008
Сообщений: 506
12.12.2012, 19:51     Парсинг XML документа по URL #6
Эм ... если вам частно надо парсить из разных урлов хмлины то я бы вам посоветовал автоматизировать процесс используюя фрэймворки для маппинга хмл и обьектов. Simple XML фрэймворк подходит. Если юзаете какой нить рестфул сервис который отдаёт всё в хмл - без такого рода либ трудно.
Yandex
Объявления
12.12.2012, 19:51     Парсинг XML документа по URL
Ответ Создать тему
Опции темы

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