Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как вытащить текст из тэга XML-документа? (Не AJAX)) (https://javascript.ru/forum/misc/24226-kak-vytashhit-tekst-iz-tehga-xml-dokumenta-ne-ajax.html)

ILL-JAH 22.12.2011 03:49

Как вытащить текст из тэга XML-документа? (Не AJAX))
 
Задача: подгрузить xml-документ в html-документ и нажатием на кнопку запустить скрипт на JS, который вытащит текст из тэга xml-документа и выдаст его через alert(); xml и html документы лежат в одной папке.

В xml нуб, поэтому вопрос: можно ли подгружать в html-документ xml-документы через тэг link? Если да, то как обратиться с содержимому с помощью JS? Если нет, то через какой тэг они (xml-документы) подгружаются?

FINoM 22.12.2011 04:02

Ajax

ksa 22.12.2011 09:15

ИЕ онли... :D

tmp.xml
<?xml version="1.0"?>
<data>
	<line>
		<col1>1</col1>
		<col2>Item 1</col2>
	</line>
	<line>
		<col1>2</col1>
		<col2>Item 2</col2>
	</line>
</data>


tmp.html
<!DOCTYPE html>
<html>
<head>
<!--
<script src="http://code.jquery.com/jquery-latest.js"></script>
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
</style>
<script type="text/javascript">
function Get() {
	var o=document.getElementById("data").rows(0).cells(1);
	o=o.getElementsByTagName('span')[0];
	alert(o.innerHTML);
}
</script>
</head>
<body onload='Get()'>
<xml id='test' src='tmp.xml'></xml>
<table id='data' DataSrc='#test' border='1'>
	<tr>
		<td>
			<span DataFld='col1'></span>
		</td>
		<td>
			<span DataFld='col2'></span>
		</td>
	</tr>
</table>
</body>
</html>

ILL-JAH 22.12.2011 12:09

То есть кроссбраузерно никак? Файлы лежат в одной папке не на сервере, а дома, на компе. Про тег <xml>, который работает только в IE, знаю.

Nekromancer 22.12.2011 12:14

iframe/object

Magneto 22.12.2011 12:38

Цитата:

Сообщение от ILL-JAH (Сообщение 145168)
То есть кроссбраузерно никак? Файлы лежат в одной папке не на сервере, а дома, на компе. Про тег <xml>, который работает только в IE, знаю.

Локально, кроссбраузерно - не получится.
AJAX запросы локально умеет делать только FF. Загружать XML файлы, в том числе и локально умеют IE и FF. Поэтому нужно или поставить легкий сервер, например nginx или заточить все это только под один браузер. Например сделать это ввиде HTA приложения.

Хотя вот Nekromancer советует iframe/object.

Nekromancer 22.12.2011 12:41

Magneto,
или загрузить xml файл в iframe и вытащить всё что нужно.

ILL-JAH 22.12.2011 15:49

Цитата:

Сообщение от Nekromancer (Сообщение 145172)
Magneto,
или загрузить xml файл в iframe и вытащить всё что нужно.

Вот я над этим думаю. iframe - это же сплывающее окно? Браузеры его блокировать будут.

p.s. Ребята, спасибо вам большое за то, что отвечаете.

trikadin 22.12.2011 16:00

Цитата:

Сообщение от ILL-JAH
iframe - это же сплывающее окно? Браузеры его блокировать будут.

iFrame - это iFrame.

FINoM 22.12.2011 16:01

Тю блин, нужно читать заголовки темы :D

Nekromancer 22.12.2011 16:04

FINoM,
Да не, ответ получился в тему. Аякс лучший вариант :)

FINoM 22.12.2011 16:58

Цитата:

Сообщение от Nekromancer
Да не, ответ получился в тему. Аякс лучший вариант

Вон айфрейм советуют, по-моему нормальное решение, если нужно обойтись без аякса. Хотя, судя по
Цитата:

Сообщение от ILL-JAH
Вот я над этим думаю. iframe - это же сплывающее окно? Браузеры его блокировать будут.

топикстартер несколько не понимает базовых принципов.

Nekromancer 22.12.2011 17:01

FINoM,
Ну я iframe и советовал. Но это не отменяет того, что аякс в принципе лучшее решение. Тем более iframe таки тоже аякс :)

FINoM 22.12.2011 17:08

http://ru.wikipedia.org/wiki/AJAX — даже не вписывается в название, Айфрейм вполне себе синхронный.

Nekromancer 22.12.2011 17:20

FINoM,
Скриптом создали скрытый айфрейм, он грузится, страница работает. Называется iframe transport.

FINoM 22.12.2011 17:24

Цитата:

Сообщение от Nekromancer
Скриптом создали скрытый айфрейм, он грузится, страница работает. Называется iframe transport.

Но при этом такой способ не перестает быть синхронным.

Nekromancer 22.12.2011 17:38

FINoM,
Ну блин, при таком подходе и JS синхронен. И XHR и script transport.

FINoM 22.12.2011 17:51

Цитата:

Сообщение от Nekromancer
И XHR и script transport.

Транспорт тоже синхронный, XHR — асинхронный, но и его можно сделать синхронным.

FINoM 22.12.2011 17:51

Хотя, может о транспорте я гоню...

Nekromancer 22.12.2011 17:55

FINoM,
JS - псевдо асинхронен, как и большинство транспортов. А XHR всего навсего поваляет включить полную синхронность.
загрузка через iframe transport не отличается по синхронности с script transport. можете просто посмотреть на этом же сайте об этих транспортах.

trikadin 22.12.2011 17:55

Цитата:

Сообщение от FINoM
Транспорт тоже синхронный, XHR — асинхронный, но и его можно сделать синхронным.

И вообще, всё хуйня, кроме пчёл, и пчёлы тоже хуйня, но прико-ольная...

(Pardon my French)

Magneto 22.12.2011 18:48

Цитата:

Сообщение от Nekromancer (Сообщение 145298)
FINoM,
Да не, ответ получился в тему. Аякс лучший вариант :)

Цитата:

Сообщение от ILL-JAH (Сообщение 145168)
Файлы лежат в одной папке не на сервере, а дома, на компе.

Так что AJAX отпадает.

Nekromancer 22.12.2011 19:46

Magneto,
Ну само собой отпадает, этот пост постился не для ответа автору. Ответ был с iframe. А это постилось для того, что бы сказать, что аяксом в идеале было бы лучше (если бы конечно можно было).

ILL-JAH 22.12.2011 23:06

Вобщем так как мне нужно с iFrame`ом работает везде кроме Хрома. И xhtml1.1 ругается на iFrame

trikadin 22.12.2011 23:45

Поставьте доктайп для iframe'ов.

Nekromancer 22.12.2011 23:46

ILL-JAH,

Это не значит, что оно не работает - раз.
Используй HTML5 - два.
Вставляй iframe динамически - три.

Профит :)

ILL-JAH 23.12.2011 00:18

Цитата:

Сообщение от trikadin
Поставьте доктайп для iframe'ов.

Да поставил уже. xhtml1.0 transitional.
Цитата:

Сообщение от Nekromancer
Это не значит, что оно не работает

А я и не говорил, что не работает.
Цитата:

Сообщение от Nekromancer
Используй HTML5

Ну хочу. Хочу чтобы с xhtml1.1 была валидация. Или в xhtml1.1 вообще нельзя никакие фрэймы применять?

Nekromancer 23.12.2011 00:20

ILL-JAH,
зачем?

ILL-JAH 23.12.2011 00:42

Nekromancer, что "зачем"?

Nekromancer 23.12.2011 00:56

Цитата:

Сообщение от ILL-JAH
Ну хочу. Хочу чтобы с xhtml1.1 была валидация.

Это.

ILL-JAH 23.12.2011 00:58

Ну есть же заморачивающиеся на xhtml 1.0 strict

Nekromancer 23.12.2011 01:01

ILL-JAH,
и что сейчас, быть как они? Если кто и заморачивается, то он знает зачем. Он знает XML и делает это для работы с ним и XSLT.

ИЕ старый не поддерживает xhtml формат.

ILL-JAH 23.12.2011 01:07

какой именно старый?

Nekromancer 23.12.2011 12:11

< 9. Именно xhtml формат, а не доктайп.

FINoM 23.12.2011 13:37

Цитата:

Сообщение от Nekromancer
ИЕ старый не поддерживает xhtml формат.

Вообще сайтов на xhtml почти никогда не существовало :)

ILL-JAH 24.12.2011 02:43

Ребят, подаскажите, а как парсить xml в Хроме? Как в нём AJAX работает?

Magneto 24.12.2011 16:07

Что значит как? Нормально работает, как и везде. XMLHttpRequest

ILL-JAH 24.12.2011 20:27

То есть XHR присылает не сам xml-файл, а данные из него (дерево элементов)?

trikadin 24.12.2011 20:33

Цитата:

Сообщение от ILL-JAH
То есть XHR присылает не сам xml-файл, а данные из него (дерево элементов)?

В свойстве responseText - текст документа. В св-ве responseXML - XML-DOM-дерево.

Первая книжка в моём списке, прочтите внимательно.

Nekromancer 24.12.2011 20:51

ILL-JAH,
XHR - получает. Может получать текст и вы вручную парсите xml через DOMParser, либо сервер посылает mime type - application/xml, и у вас xml в responseXML.


Часовой пояс GMT +3, время: 02:37.