получение доступа к xml файлу на локальном диске
ситуация такая: есть xml файл на локальном диске, надо как-то скрипту, который находится в html файле на том же локальном диске, предоставить доступ к xml файлу. Возможно ли это? если да, то как делать? )
|
файлы в одной папке лежат? если да, использовать локальныепути
если нет, то вставляй ссылки типа file:// но у меня так стили в хроме не работали со скриптами. в мозилле вроде ок... |
Можно попробовать XHR, но, сдается мне, ограничения политики безопасности не дадут сделать что-нибудь толковое.
|
Цитата:
Я один раз пытался открыть файл во фрейме и уже оттуда с ним работать - не разрешили. |
melky: можно пример получения xml-файла скриптом?
walik: а как js будет определять содержание фрейма? и кто не разрешил так делать? ) |
тут трудновато будет сделать
ну положи 2 файла в 1 папку и получай содержимое через ajax. если они будут в одной папке, то, скорей всего, политика безопасности не будет обсирать малину |
Цитата:
|
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 ) |
не работает, говорит: "Access is denied". Интересно все-таки как js содержимое фреймов воспринимает....
|
Насколько помню XHR ограничен http протоколом.
|
Для Opera и Firefox:
xmlData = document.implementation.createDocument("", "", null); xmlData.load("my.xml"); Для IE нужно использовать ActiveXObject. А в Chrome и Safari нету поддержки метода load() объекта document.implementation.createDocument() |
И вопрос, где Вы это собираетесь использовать? Возможно есть альтернативные решения.
|
есть некая программа, которая в качестве результата генерирует xml файл, и для удобства просмотра результатов этот xml надо красиво отобразить в качестве HTML страницы.
|
Если это все работает только в Windows то стоит посмотреть в сторону HTA. http://ru.wikipedia.org/wiki/HTML_Application
|
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 подскажите пожалуйста, в чем мой косяк? |
Прикрути к XML-файлу таблицы стилей (css, xslt) и открывай его в браузере на прямую в красивом виде.
|
все изменилось, и теперь мне надо брать данные из одного xml файла и группировать их в зависимости от данных которые лежат в другом xml файле, поэтому просто прикрутить css и xslt не получится.
|
заметил еще такую особенность: если изменить расширение у xml файла на htm, то выше написанный мной скрипт будет нормально работать, не подскажете почему? )
|
Потому что DOM отличается. В XML нет тегов (в понятии DOM), есть узлы. Поэтому, например, нужно обращаться не node.tagName, а node.nodeName.
Про getElementsByTagName теперь понятно? |
а как тогда получить узел из xml ? (желательно пример посмотреть)
|
childNodes, nextSibling тебе в помощь.
|
Часовой пояс GMT +3, время: 05:13. |