Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Как загрузить xml с url? / 19 сообщений из 19, страница 1 из 1
26.01.2012, 11:28:52
    #37632334
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как загрузить xml с url?
Пытаюсь загружать xml но в процессе все валится хотя xml валидный и в других программах все с ним хорошо

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
URL url;
InputStream ops = null;
StringBuilder sb = new StringBuilder();
String s = null;
try {
	url = new URL("http://MySite/document.xml");
	ops = url.openStream();
	DataInputStream dis = new DataInputStream(new BufferedInputStream(ops));
	while ((s = dis.readUTF()) != null) {
            sb.append(s);
            System.out.println(s);
         }
} catch (Exception e) {
	e.printStackTrace();
}finally {
        try {
           ops.close();
        } catch (IOException ioe) {
        }
}
	
String xsltData = sb.toString();



по средине вывода в консоль документа вылетает ошибка

Код: java
1.
2.
3.
4.
5.
6.
7.
at java.io.DataInputStream.readFully(Unknown Source)
at java.io.DataInputStream.readUTF(Unknown Source)
at java.io.DataInputStream.readUTF(Unknown Source)
at applet.Test(applet.java:257)
at applet.init(applet.java:280)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)



но потом вывод продолжается и документ загружается не до конца
в дебагере в блоке catch вылетает java.io.EOFException - почему он вылетает преждевременно не могу понять
...
Рейтинг: 0 / 0
26.01.2012, 11:31:32
    #37632342
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как загрузить xml с url?
Где сама ошибка?
А если документ не UTF?
Откройте для себя, наконец Apache Commons
...
Рейтинг: 0 / 0
26.01.2012, 11:47:49
    #37632405
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как загрузить xml с url?
BlazkowiczГде сама ошибка?
А если документ не UTF?
Откройте для себя, наконец Apache Commons

документ точно UTF-8
...
Рейтинг: 0 / 0
26.01.2012, 11:59:45
    #37632431
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как загрузить xml с url?
Мля, слона-то я и не приметил. DataInputStream вам на кой черт сдался? Вы всё так же не читаете документацию? Прочитайте. Попробуйте понять для чего этот класс предназначен.
...
Рейтинг: 0 / 0
26.01.2012, 12:10:47
    #37632459
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как загрузить xml с url?
BlazkowiczМля, слона-то я и не приметил. DataInputStream вам на кой черт сдался? Вы всё так же не читаете документацию? Прочитайте. Попробуйте понять для чего этот класс предназначен.

Я в общемто яву вообще не знаю - но больше некому а мне поручили :)
Нашел коекакой пример в инете и попытался соорудить - поэтому чтение мне мало поможет - потому как сначала надо года 2 было читать до этого а их у меня нет! (
...
Рейтинг: 0 / 0
26.01.2012, 12:20:08
    #37632484
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как загрузить xml с url?
...
Рейтинг: 0 / 0
26.01.2012, 12:39:01
    #37632553
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как загрузить xml с url?
BlazkowiczOK. Зацени:
http://commons.apache.org/io/api-release/org/apache/commons/io/IOUtils.html#toString%28java.net.URL%29

у меня стандартная ява и там нет IOUtils (
...
Рейтинг: 0 / 0
26.01.2012, 12:43:33
    #37632574
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как загрузить xml с url?
spу меня стандартная ява и там нет IOUtils (
И подключить библиотеку нельзя почему?
http://commons.apache.org/io/download_io.cgi
...
Рейтинг: 0 / 0
26.01.2012, 12:50:15
    #37632608
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как загрузить xml с url?
Blazkowiczspу меня стандартная ява и там нет IOUtils (
И подключить библиотеку нельзя почему?
http://commons.apache.org/io/download_io.cgi

эхх.. вы мне одну проблему заменили другой (еслиб я знал как подключать, потом проект собирать и как эти доб библиотеки к апплету корректно цеплять..)... видно пока не судьба..буду пока решать проблему другими способами
...
Рейтинг: 0 / 0
26.01.2012, 12:58:33
    #37632640
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как загрузить xml с url?
spэхх.. вы мне одну проблему заменили другой (еслиб я знал как подключать, потом проект собирать и как эти доб библиотеки к апплету корректно цеплять..)... видно пока не судьба..буду пока решать проблему другими способами
Как сложно жить в этом мире. Да?

http://www.exampledepot.com/egs/java.io/ReadLinesFromFile.html

Либо вот это.
http://www.exampledepot.com/egs/java.io/file2bytearray.html
Потом byte[] можно конвертнуть в String. Либо обернуть в InputStreamReader и читать точно так же, но посимвольно. Писать в StringBuilder/
...
Рейтинг: 0 / 0
26.01.2012, 13:16:16
    #37632707
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как загрузить xml с url?
Blazkowiczspэхх.. вы мне одну проблему заменили другой (еслиб я знал как подключать, потом проект собирать и как эти доб библиотеки к апплету корректно цеплять..)... видно пока не судьба..буду пока решать проблему другими способами
Как сложно жить в этом мире. Да?

http://www.exampledepot.com/egs/java.io/ReadLinesFromFile.html

Либо вот это.
http://www.exampledepot.com/egs/java.io/file2bytearray.html
Потом byte[] можно конвертнуть в String. Либо обернуть в InputStreamReader и читать точно так же, но посимвольно. Писать в StringBuilder/

Ну это же все чтение локальных файлов, а мне надо с сайта загрузить файл
...
Рейтинг: 0 / 0
26.01.2012, 13:17:20
    #37632712
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как загрузить xml с url?
spНу это же все чтение локальных файлов, а мне надо с сайта загрузить файл
LOL. Т.е. понять что там написано не возможно в принципе? InputStream он и в африке InputStream.
...
Рейтинг: 0 / 0
26.01.2012, 13:21:25
    #37632721
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как загрузить xml с url?
BlazkowiczspНу это же все чтение локальных файлов, а мне надо с сайта загрузить файл
LOL. Т.е. понять что там написано не возможно в принципе? InputStream он и в африке InputStream.

спасибо, попробую разобраться
...
Рейтинг: 0 / 0
26.01.2012, 13:36:24
    #37632761
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как загрузить xml с url?
Сделал, но у меня сомнения по поводу чтения по одному байту

Код: 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.
		URL url;
		InputStream ops = null;
		StringBuilder sb = new StringBuilder();
		String s = null;
		
		try {
			url = new URL("http://109.254.80.34/JavaTest/AgentReport.xml");
			ops = url.openStream();
			BufferedInputStream dis = new BufferedInputStream(ops);
			byte[] data = new byte[1];
			int x = 0;
			while ((x = dis.read(data)) >= 0) {
				s = new String(data);
				sb.append(s);
				//System.out.println(s);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				ops.close();
			} catch (IOException ioe) {
			}
		}
		String xsltData = sb.toString();



Пробовал читать блоками по 1024, но естественно возникала ошибка когда последний блок меньше 1024 байта
...
Рейтинг: 0 / 0
26.01.2012, 13:48:47
    #37632797
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как загрузить xml с url?
Если читать из BufferedInputStream, то можно и по одному байту.
Вот это вот не верно
s = new String(data);
нельзя покускам собирать строку. Символ может быть 1, 2 и более байт. Если граница строки не совпадёт с границей символа, то будут испорчены данные.

Я имел ввиду что создать byte[] как в примере, через ByteArrayOutputStream, а потом целиком конвертнуть его в строку.
...
Рейтинг: 0 / 0
26.01.2012, 14:07:28
    #37632856
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как загрузить xml с url?
BlazkowiczЕсли читать из BufferedInputStream, то можно и по одному байту.
Вот это вот не верно
s = new String(data);
нельзя покускам собирать строку. Символ может быть 1, 2 и более байт. Если граница строки не совпадёт с границей символа, то будут испорчены данные.

Я имел ввиду что создать byte[] как в примере, через ByteArrayOutputStream, а потом целиком конвертнуть его в строку.
К сожалению я не силен в java ( - не могли б вы привести фрагмент кода, пожалуйста
...
Рейтинг: 0 / 0
26.01.2012, 14:29:03
    #37632923
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как загрузить xml с url?
Разобрался

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
ByteArrayOutputStream b = new ByteArrayOutputStream();
...
byte[] data = new byte[1];
while ((dis.read(data)) >= 0) {
	b.write(data, 0, 1);
}
...

String xsltData = b.toString();




Спасибо!
...
Рейтинг: 0 / 0
26.01.2012, 16:09:26
    #37633257
goalinternet
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как загрузить xml с url?
sp,

А если сначала в файл скачать, а оттуда открыть 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.
File tmpFile = File.createTempFile("our_downloaded_", ".xml");
try {
	String tmpFileName = tmpFile.getCanonicalPath();
	String urlPath = "http://...........";

	FileOutputStream fos = new FileOutputStream(tmpFileName);
	try {
		URL fileUrl = new URL(urlPath);
		ReadableByteChannel rbc = Channels.newChannel(fileUrl.openStream());
		fos.getChannel().transferFrom(rbc, 0, 1 << 24);
	} finally {
		fos.close();
	}

	// здесь работаем с загруженным файлом tmpFile - он же xml-лина
	FileInputStream fis = new FileInputStream(tmpFile);
	DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
	DocumentBuilder db = dbf.newDocumentBuilder();
	Document doc = db.parse(fis);

	doc.getDocumentElement().normalize();
	NodeList nodeList = doc.getElementsByTagName("наша_нода");
	// и т.д. ....
} finally {
	tmpFile.delete();
}
...
Рейтинг: 0 / 0
26.01.2012, 16:47:41
    #37633369
zalexaka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как загрузить xml с url?
goalinternet,

читаем трейс внимательней
Код: java
1.
2.
3.
4.
5.
…
at applet.Test(applet.java:257)
at applet.init(applet.java:280)
at sun.applet.AppletPanel.run(Unknown Source)
…
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Как загрузить xml с url? / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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