Загрузка файла XML с использованием xmlhttp в IE8 - PullRequest
3 голосов
/ 24 марта 2011

Я разрабатываю онлайн-опрос, одной из основных функций которого является то, что вопросы хранятся извне в файле XML, причем каждый раз загружаются случайные вопросы.Хотя код, который у меня работает, отлично работает в Firefox, я получаю сообщение об ошибке «Отказано в доступе» при попытке загрузить страницу в Internet Explorer 8. Я выделил проблему для следующей части кода:

//Import the XML File
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5*/
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}

//Import XML
xmlhttp.open("POST","Personalized Tour/questions.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;

В частности, похоже, что ошибка выдается в файле xmlhttp.open.Я смотрел на нескольких других веб-сайтах аналогичные проблемы, и они, казалось, предположили, что была какая-то ошибка домена, которая вызывала настройки безопасности IE8.Это так или есть что-то большее?

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 21 апреля 2012

в IE вы можете использовать XPATH непосредственно в xml doc, другие браузеры делают это, создавая синтаксический анализатор xpath

Итак, выбор всех «основных» элементов будет выглядеть так:

xmlDoc.selectNodes("//major")

но если у вас есть [0] селектор индекса, вы можете сделать это более эффективно с помощью:

xmlDoc.selectSingleNode("//major")

результаты обоих весьма различны (кроме увеличения производительности)

selectNodes вернет список узлов (список не является частью dom) selectSingleNode вернет первый узел (не список)

однако вы можете сделать окончательный выбор в одной команде с xpath, например:

xmlDoc.selectSingleNode("//major/*[1]/*[9]/*[0]")

/ * [n] нотация в порядке, но вы можете использовать имена узлов, если они уникальны или являются комбинацией обоих

имея узел, вы можете добавить .noValue, .text, .textContent, .nodeName по мере необходимости

...