Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Android > чтение XML


Автор: Areostar 19.1.2014, 10:19
Здраствуйте.

В сети сушествует xml фаил: http://www.boi.org.il/currency.xml

надо чтоб моё андройд приложение читало от туда инфу.

Разясните плиз как это проше сделать. В гугле искал но или не то что надо или заумно слошком

Автор: Felan 19.1.2014, 15:49
Любым обычным для Java способом.

На пример http://www.java-tips.org/java-se-tips/javax.xml.parsers/how-to-read-xml-file-in-java.html


Автор: Areostar 20.1.2014, 09:12
Вот сделал чтото по примеру наёденому в сети:

Код

package com.andrik.worldmonye;
import java.net.URL;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import java.io.File;
import java.io.InputStream;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.widget.TextView;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        TextView myText = (TextView)findViewById(R.id.textViewRation);
        
        try 
        {
            URL url = new URL("http://www.boi.org.il/currency.xml");
            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
            DocumentBuilder db = dbf.newDocumentBuilder();
            Document doc = db.parse(new InputStream(url.openStream()));
            doc.getDocumentElement().normalize();

            NodeList nodes = doc.getElementsByTagName("currency");
            for (int i = 0; i < nodes.getLength(); i++) 
            {
                Node node = nodes.item(i);
                if (node.getNodeType() == Node.ELEMENT_NODE)
                {
                 Element element = (Element) node;
                 myText.setText(getValue("name", element));
                }
            }
        } catch (Exception e) {
            System.out.println("XML Pasing Excpetion = " + e);
        }

    }

    private CharSequence getValue(String string, Element element) {
         NodeList nodes = element.getElementsByTagName(string).item(0).getChildNodes();
         Node node = (Node) nodes.item(0);

         return node.getNodeValue();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}


получаю ошибку на строчку:

Код

Document doc = db.parse(new InputStream(url.openStream()));


ошибка именно на InputStream текст ошибки 
Цитата

Cannot instantial the type InputStream


Как исправить?

Автор: Felan 20.1.2014, 12:25
Цитата(Areostar @  20.1.2014,  11:12 Найти цитируемый пост)
Как исправить?

Хоть немного самому http://developer.android.com/reference/java/io/InputStream.html.

InputStream  - абстрактный класс. Нельзя создать его объект. Надо использовать его неабстрактных потомков.

Автор: Areostar 21.1.2014, 14:38
В Java Я полный новичёк. Обьясните мне просто как следует читать xml приусловии что файлик находится в сети

Автор: Areostar 22.1.2014, 09:30

Порылся на youtube кое что проясняется но вот возник вопрос

если xml лежит на каком то сайте как в моём случае. то может ли андройд приложение сразу читать его или придётся её скачивать? 

Автор: ShellRaiser 29.1.2014, 15:40
Цитата(Areostar @ 22.1.2014,  09:30)
Порылся на youtube кое что проясняется но вот возник вопрос

если xml лежит на каком то сайте как в моём случае. то может ли андройд приложение сразу читать его или придётся её скачивать?

Вы можете в парсер передавать сразу поток -  InputStream.

Автор: dmfranklin6 23.2.2014, 15:50
Цитата(Felan @ 19.1.2014,  13:49)
Любым обычным для Java способом.

На пример http://www.java-tips.org/java-se-tips/javax.xml.parsers/how-to-read-xml-file-in-java.html

спасибо

Автор: VictorKyselov 26.3.2014, 13:12
Любым обычным для Java способом.

На пример вот так


Благодарю за полезную инфу, а то я на престижио тоже разобраться не мог

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)