powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как пропарсит XML
13 сообщений из 13, страница 1 из 1
Как пропарсит XML
    #38533572
Фотография Areostar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не надо считать информацию вот от сюда: http://www.boi.org.il/currency.xml

пробывал несколько вариантов из сети, но видемо чтото не так делаю. Обьясните пожалуйста как надо если можно проиллюстрируйте. В Java я совсем новичёк!
...
Рейтинг: 0 / 0
Как пропарсит XML
    #38533647
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Areostarне надо считать информацию вот от сюда: http://www.boi.org.il/currency.xml

пробывал несколько вариантов из сети, но видемо чтото не так делаю. Обьясните пожалуйста как надо если можно проиллюстрируйте. В Java я совсем новичёк!Чтобы понять что Вы не так делали, надо увидеть код, который Вы использовали...(для вставки кода используйте кнопку SRC...)
...
Рейтинг: 0 / 0
Как пропарсит XML
    #38533693
Фотография Areostar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот кодю Как поправит?

Код: 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.
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;
	}
}
...
Рейтинг: 0 / 0
Как пропарсит XML
    #38533744
Фотография Areostar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот нашел ещё примерчик: http://www.tek-tips.com/viewthread.cfm?qid=1404124

получаю ощибке на строчку
Код: java
1.
 InputStream stream = url.openStream();



Я читал что InputStream абстрактный клас но не понял на что мне его заменить?
...
Рейтинг: 0 / 0
Как пропарсит XML
    #38533896
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AreostarВот нашел ещё примерчик: http://www.tek-tips.com/viewthread.cfm?qid=1404124

получаю ощибке на строчку
Код: java
1.
 InputStream stream = url.openStream();



Я читал что InputStream абстрактный клас но не понял на что мне его заменить?
Сейчас господа телепаты достанут свои хрустальные шары с кофейной гущей и угадают какая у вас ошибка...
...
Рейтинг: 0 / 0
Как пропарсит XML
    #38533920
Фотография Zukora
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> InputStream абстрактный клас но не понял на что мне его заменить?
Его не заменяют, а наследуют и потом реализовывают указанные в нем методы.
...
Рейтинг: 0 / 0
Как пропарсит XML
    #38533950
Фотография Areostar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Начнём с начала пока не запутались.

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

если xml лежит на каком то сайте как в моём случае. то может ли андройд приложение сразу читать его или придётся её скачивать?
...
Рейтинг: 0 / 0
Как пропарсит XML
    #38534113
Stupid_BOT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Areostar,
а в чём Вы усматриваете разницу между "сразу читать" и "придётся её скачивать", если xml где-то там в интернетах ?

ЗЫ: без класса InputStream можно обойтись.
Код: 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.
  // ... начало метода onCreate
    Document doc = null;
    try {
      doc = DocumentBuilderFactory.newInstance()
                .newDocumentBuilder()
                .parse("http://www.boi.org.il/currency.xml");
    } catch (Exception e) {
      e.printStackTrace();
      System.exit(0xD);
    }                

    NodeList list = doc.getElementsByTagName("CURRENCY");
    Element el;
    System.out.printf(" курсы валют на: %s\n", 
                      doc.getElementsByTagName("LAST_UPDATE")
                         .item(0)
                         .getFirstChild().getNodeValue());

    for(int i = 0, len = list.getLength(); ii<len; ii++) {
        el = (Element) list.item(i);
        System.out.printf(" наменование:%s, за штук:%s, код:%s, страна:%s, курс:%s, дельта:%s\n", 
                          getValue("NAME", el),
                          getValue("UNIT", el),
                          getValue("CURRENCYCODE", el),
                          getValue("COUNTRY", el),
                          getValue("RATE", el),
                          getValue("CHANGE", el));
  }
  System.out.println();
  // продолжение метода onCreate ...

...
Рейтинг: 0 / 0
Как пропарсит XML
    #38534347
Фотография Areostar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stupid_BOTAreostar,
а в чём Вы усматриваете разницу между "сразу читать" и "придётся её скачивать", если xml где-то там в интернетах ?

В том смысле что если скачивать файлик то придётся его в конце удолять. или я чтото не так понимаю.
Stupid_BOTЗЫ: без класса InputStream можно обойтись.


попробывл ваш вариант но после компеляции в эмуляторе программа аварийно закрывается
ощибки из лога в приложении к постую не могу ничего понят?
...
Рейтинг: 0 / 0
Как пропарсит XML
    #38534909
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Areostar,

Прежде чем читать и разбирать (парсить) XML файл из сети, его необходимо скачать, в оперативную-ли память, на "диск" в андроиде - это не важно. Делать это следует по одной простой причине, для разбора XML документа он должен быть правильным (валидным), т.е. полным. Скачивание на устройство позволяет убедиться в том, что файл и последующий поток (stream) целый. Далее Вы уже можете использовать FileInputStream, MemoryInputStream, и другие производные от InputStream для чтения содержимого XML документа.

PS. Убедительная просьба, пожалуйста, не коверкайте русский язык, постарайтесь излагать Ваши мысли нормально, а то читать неприятно.
Спасибо за понимание.
...
Рейтинг: 0 / 0
Как пропарсит XML
    #38534918
avp.mk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
getElementsByTagName чувствителен к регистру..
MainActivity.java
Код: 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.
package com.andrik.worldmonye;

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

import java.io.BufferedInputStream;
import java.io.Closeable;
import java.io.InputStream;
import java.net.URL;

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

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

public class MainActivity extends Activity {

    @Override public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

    public void onButtonClick(View view) {
        TextView textViewRation = (TextView) findViewById(R.id.textViewRation);

        InputStream is = null;
        try {
            DocumentBuilder documentBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
            URL url = new URL("http://www.boi.org.il/currency.xml");
            is = new BufferedInputStream(url.openStream());
            Document document = documentBuilder.parse(is);
            document.getDocumentElement().normalize();

            NodeList nodes = document.getElementsByTagName("CURRENCY");
            for (int i = 0; i < nodes.getLength(); i++) {
                Node node = nodes.item(i);
                if (node.getNodeType() == Node.ELEMENT_NODE) {
                    textViewRation.append("\n");
                    textViewRation.append(getValue("NAME", (Element) node));
                }
            }
        } catch (Throwable e) {
            textViewRation.append("\n\nhas error: " + e);
        } finally {
            closeQuietly(is);
            textViewRation.append("\n\ndone");
        }
    }

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

    private static void closeQuietly(Closeable resource) {
        if (resource != null) {
            try { resource.close(); } catch (Exception e) {}
        }
    }
}



P.S. А зачем вам вообще DOM.. Используйте SAX.
...
Рейтинг: 0 / 0
Как пропарсит XML
    #38535009
Фотография Areostar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо ощибок больше не выдаёт но и не выполнеяется try выдаёт catch:
Unknown HostExeption www.boi.org.il. что с этим делоть?
...
Рейтинг: 0 / 0
Как пропарсит XML
    #38535014
Фотография Areostar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё разобрался!!!

http://www.helloandroid.com/tutorials/how-download-fileimage-url-your-device

permission добавить надо
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Как пропарсит XML
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]