Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.02.2011, 18:53
Аватар для Armen
Кандидат Javascript-наук
Отправить личное сообщение для Armen Посмотреть профиль Найти все сообщения от Armen
 
Регистрация: 28.06.2009
Сообщений: 120

Получение XML документов
Подскажите пожалуйста, что не так, почему не работает скрипт, вроде все делаю правильно
Хочу с сервера забрать xml документ и прочитать его, xml находится в одной и той же папке со скриптом

<script type="text/javascript">
XML.newDocument = function ( rootTagName, namespaceURL )
{
if (!rootTagName) rootTagName = "";
if (!namespaceURL) namespaceURL = "";
if ( document.implementation && document.implementation.createDocument )
{
// Способ создания в соответствии со стандартом W3C
return document.implementation.createDocument( namespaceURL, rootTagName, null );
}
else
{
// Способ, специфичный для IE cоздать пустой документ как ActiveXобъект.
// Если корневой элемент не определен, на этом создание документа можно считать законченным
var doc = new ActiveXObject("MSXML2.DOMDocument");

// Если корневой элемент определен, инициализировать документ
if (rootTagName)
{
// Проверить наличие префикса пространства имен
var prefix = "";
var tagname = rootTagName;
var p = rootTagName.indexOf(':');

if (p != -1)
{
prefix = rootTagName.substring(0, p);
tagname = rootTagName.substring(p+1);
}

// Если пространство имен определено, должен быть префикс пространства имен.
// Если пространство имен не определено, необходимо удалить существующий префикс
if (namespaceURL)
{
if (!prefix) prefix = "a0"; // Используется в Firefox
}
else prefix = "";

// Создать корневой элемент (с необязательным пространством имен) в виде текстовой строки
var text = "<" + (prefix?(prefix+":"):"") + tagname + (namespaceURL ? (" xmlns:" + prefix + '="' + namespaceURL +'"') :"") + "/>";
// И преобразовать текст в пустой документ
doc.loadXML(text);
}

return doc;
}
};

XML.load = function(url)
{
// Создать пустой документ с помощью функции, определенной ранее
var xmldoc = XML.newDocument();
xmldoc.async = false; // Загрузка выполняется синхронно
xmldoc.load("test.xml"); // Загрузить и проанализировать
return xmldoc; // Вернуть документ

alert(xmldoc)
};
</script>
Ответить с цитированием
  #2 (permalink)  
Старый 27.02.2011, 19:10
Аватар для Amphiluke
   ☽
Отправить личное сообщение для Amphiluke Посмотреть профиль Найти все сообщения от Amphiluke
 
Регистрация: 07.01.2011
Сообщений: 254

Сообщение от Armen
return xmldoc; // Вернуть документ
alert(xmldoc)
С какой целью этот alert здесь вставлен, если после return функция возвращает управление, и последующий код не выполняется ни при каких обстоятельствах?
Ответить с цитированием
  #3 (permalink)  
Старый 27.02.2011, 19:22
Аватар для Armen
Кандидат Javascript-наук
Отправить личное сообщение для Armen Посмотреть профиль Найти все сообщения от Armen
 
Регистрация: 28.06.2009
Сообщений: 120

Сообщение от Amphiluke Посмотреть сообщение
С какой целью этот alert здесь вставлен, если после return функция возвращает управление, и последующий код не выполняется ни при каких обстоятельствах?
alert() случайно написал, в оригинальном варианте его нет
Ответить с цитированием
  #4 (permalink)  
Старый 27.02.2011, 19:30
Аватар для Amphiluke
   ☽
Отправить личное сообщение для Amphiluke Посмотреть профиль Найти все сообщения от Amphiluke
 
Регистрация: 07.01.2011
Сообщений: 254

И как же вы определяете, что код не работает?

Объект XML у вас где-нибудь определяется?
Ответить с цитированием
  #5 (permalink)  
Старый 27.02.2011, 19:33
Аватар для Armen
Кандидат Javascript-наук
Отправить личное сообщение для Armen Посмотреть профиль Найти все сообщения от Armen
 
Регистрация: 28.06.2009
Сообщений: 120

Сообщение от Amphiluke Посмотреть сообщение
С какой целью этот alert здесь вставлен, если после return функция возвращает управление, и последующий код не выполняется ни при каких обстоятельствах?
А как проверить работает ли он вообще ?
Что-то я совсем запутался, подскажите пожалуйста, как обратиться к какому-нибудь тегу xml
Ответить с цитированием
  #6 (permalink)  
Старый 27.02.2011, 19:39
Аватар для Amphiluke
   ☽
Отправить личное сообщение для Amphiluke Посмотреть профиль Найти все сообщения от Amphiluke
 
Регистрация: 07.01.2011
Сообщений: 254

Ну вы даете. =) У вас книга, с которой списан этот код, и в книге вся глава посвящена этому. В частности, в книге написано, что если вы не планируете полностью объявлять пространство имен XML, то просто объявите его так:
XML = {};


Как обращаться к элементам в XML-документе, там тоже расписано. Получаете ссылку на documentElement, и дальше действуете методами типа getElementsByTagName, атрибутами типа childNodes и nodeValue и прочее.
Ответить с цитированием
  #7 (permalink)  
Старый 27.02.2011, 19:40
Аватар для Armen
Кандидат Javascript-наук
Отправить личное сообщение для Armen Посмотреть профиль Найти все сообщения от Armen
 
Регистрация: 28.06.2009
Сообщений: 120

А если я буду обращаться к xml который находится на другом сервере, вступит политика безопасности или в данном случае НЕТ ?
Ответить с цитированием
  #8 (permalink)  
Старый 27.02.2011, 19:44
Аватар для Amphiluke
   ☽
Отправить личное сообщение для Amphiluke Посмотреть профиль Найти все сообщения от Amphiluke
 
Регистрация: 07.01.2011
Сообщений: 254

Зависит от настроек стороннего сервера. Скорее всего, вы просто не сможете получить XML-документ.
Ответить с цитированием
  #9 (permalink)  
Старый 27.02.2011, 19:47
Аватар для Armen
Кандидат Javascript-наук
Отправить личное сообщение для Armen Посмотреть профиль Найти все сообщения от Armen
 
Регистрация: 28.06.2009
Сообщений: 120

А с помощью чего можно реализовать подобное, когда xml на другом сервере?
Ответить с цитированием
  #10 (permalink)  
Старый 27.02.2011, 19:53
Аватар для Amphiluke
   ☽
Отправить личное сообщение для Amphiluke Посмотреть профиль Найти все сообщения от Amphiluke
 
Регистрация: 07.01.2011
Сообщений: 254

Я не специалист в этом. Почитайте о кроссдоменном скриптинге.
Можно начать отсюда.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с парсингом XML Verhal Общие вопросы Javascript 2 12.06.2010 22:25
Как удалить из памяти весь XML документ? EisBerg Events/DOM/Window 1 03.04.2010 14:45
Изменение текста в XML (не удаленный, но править нельзя) Qwe2Qwe Общие вопросы Javascript 3 28.02.2010 12:44
Что выбрать XML или JSON для передачи Ajax - ом из PHP в JS Gozar Общие вопросы Javascript 20 16.08.2009 23:36
Не получается загрузить xml из php Alekson jQuery 2 08.07.2009 09:33