Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   получение доступа к xml файлу на локальном диске (https://javascript.ru/forum/dom-window/18563-poluchenie-dostupa-k-xml-fajjlu-na-lokalnom-diske.html)

weeklyTea 06.07.2011 19:05

получение доступа к xml файлу на локальном диске
 
ситуация такая: есть xml файл на локальном диске, надо как-то скрипту, который находится в html файле на том же локальном диске, предоставить доступ к xml файлу. Возможно ли это? если да, то как делать? )

melky 06.07.2011 19:10

файлы в одной папке лежат? если да, использовать локальныепути

если нет, то вставляй ссылки типа file://

но у меня так стили в хроме не работали со скриптами. в мозилле вроде ок...

B@rmaley.e><e 06.07.2011 19:37

Можно попробовать XHR, но, сдается мне, ограничения политики безопасности не дадут сделать что-нибудь толковое.

walik 06.07.2011 23:44

Цитата:

Сообщение от B@rmaley.e><e
ограничения политики безопасности не дадут сделать что-нибудь толковое.

Именно, скорее всего так и будет.
Я один раз пытался открыть файл во фрейме и уже оттуда с ним работать - не разрешили.

weeklyTea 07.07.2011 12:32

melky: можно пример получения xml-файла скриптом?
walik: а как js будет определять содержание фрейма? и кто не разрешил так делать? )

melky 07.07.2011 12:41

тут трудновато будет сделать

ну положи 2 файла в 1 папку и получай содержимое через ajax.

если они будут в одной папке, то, скорей всего, политика безопасности не будет обсирать малину

weeklyTea 07.07.2011 12:55

Цитата:

Сообщение от melky (Сообщение 112175)
ну положи 2 файла в 1 папку и получай содержимое через ajax.

расскажешь как? я совсем мало знаю.

melky 07.07.2011 13:03

var a = new XMLHttpRequest();

a.open("GET", "/myxml.xml");

a.onreadystatechange = function(){
          if (a.readyState===4){
                  // данные  в a.responseText или a.responseXML
                  // доступ к ним read-only (только чтение)
                  alert( a.responseText )
          }
}

a.send(null);


или так

var a = new XMLHttpRequest();

a.open("GET", "/myxml.xml", false);

a.send(null);

// данные  в a.responseText или a.responseXML
// доступ к ним read-only (только чтение)

alert( a.responseText )

weeklyTea 07.07.2011 14:06

не работает, говорит: "Access is denied". Интересно все-таки как js содержимое фреймов воспринимает....

Magneto 07.07.2011 22:09

Насколько помню XHR ограничен http протоколом.

Magneto 07.07.2011 22:19

Для Opera и Firefox:
xmlData = document.implementation.createDocument("", "", null);
xmlData.load("my.xml");


Для IE нужно использовать ActiveXObject. А в Chrome и Safari нету поддержки метода load() объекта document.implementation.createDocument()

Magneto 07.07.2011 22:22

И вопрос, где Вы это собираетесь использовать? Возможно есть альтернативные решения.

weeklyTea 08.07.2011 12:59

есть некая программа, которая в качестве результата генерирует xml файл, и для удобства просмотра результатов этот xml надо красиво отобразить в качестве HTML страницы.

Magneto 08.07.2011 13:29

Если это все работает только в Windows то стоит посмотреть в сторону HTA. http://ru.wikipedia.org/wiki/HTML_Application

weeklyTea 21.07.2011 19:32

HTA не подходит, т.к. работать должно на других ОС тоже.

решил делать так: вставлять xml файл в iframe, оттуда брать xml и работать с ним. Но у меня возникла такая проблема.
Вот страница:
<html>
<head>
<script type="text/javascript">

window.onload = function getElem(){
var iframe = document.getElementById('ifr');
vat iframeDoc = iframe.contentWindow.document;
var elem = iframeDoc.getElementsByTagName('message');
//message -это элемент из xml
alert (elem[0].innerHTML);
}

</script>
</head>

<body>
<iframe id="ifr" src="myXML.xml"></iframe>
</body>
</html>


на это вылазиет ошибка: elem[0] is undefined
подскажите пожалуйста, в чем мой косяк?

B~Vladi 22.07.2011 10:34

Прикрути к XML-файлу таблицы стилей (css, xslt) и открывай его в браузере на прямую в красивом виде.

weeklyTea 22.07.2011 11:04

все изменилось, и теперь мне надо брать данные из одного xml файла и группировать их в зависимости от данных которые лежат в другом xml файле, поэтому просто прикрутить css и xslt не получится.

weeklyTea 22.07.2011 11:11

заметил еще такую особенность: если изменить расширение у xml файла на htm, то выше написанный мной скрипт будет нормально работать, не подскажете почему? )

B~Vladi 22.07.2011 12:03

Потому что DOM отличается. В XML нет тегов (в понятии DOM), есть узлы. Поэтому, например, нужно обращаться не node.tagName, а node.nodeName.
Про getElementsByTagName теперь понятно?

weeklyTea 22.07.2011 12:13

а как тогда получить узел из xml ? (желательно пример посмотреть)

B~Vladi 22.07.2011 12:48

childNodes, nextSibling тебе в помощь.


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