получение доступа к 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, время: 11:15. |