Парсинг XML DOM
- Предыдущая страница Дерево узлов DOM
- Следующая страница Загрузка DOM
Большинство браузеров имеют встроенный XML-парсер для чтения и работы с XML.
Парсер преобразует XML в объекты, доступные для JavaScript.
Пример
Примеры, предоставляемые CodeW3C.com, независимы от браузера и платформы. Эти примеры могут быть выполнены во всех современных браузерах.
Парсинг XML
Все современные браузеры имеют встроенный XML-парсер для чтения и работы с XML.
Парсер читает XML в память и преобразует его в объект XML DOM, доступный для JavaScript.
XML-парсер Microsoft имеет отличия от парсеров других браузеров. Парсер Microsoft поддерживает загрузку XML-файлов и XML-строк (текста), в то время как другие браузеры используют отдельные парсеры. Однако, все парсеры содержат функции для遍ения XML-дерева, доступа, вставки и удаления узлов.
В этом руководстве мы объясним, как создать скрипты, которые будут работать в IE и других браузерах.
Загрузка XML через XML-парсер Microsoft
XML-парсер Microsoft встроен в Internet Explorer 5 и более новые версии.
Ниже приведен фрагмент JavaScript, который загружает документ XML ("books.xml) Загрузите анализатор:
xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async="false"; xmlDoc.load("books.xml");
Комментарий к коду:
- В первой строке создается пустой объект документа Microsoft XML.
- второй строкой отключается асинхронная загрузка, чтобы убедиться, что анализатор не продолжит выполнение скрипта до полного загрузки документа
- третьей строкой告知 анализатор загружать документ под именем "books.xml"
Ниже приведен фрагмент JavaScript, который загружает строку под именем txt в анализатор:
xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async="false"; xmlDoc.loadXML(txt);
Примечание:loadXML() Метод предназначен для загрузки строки (текста), а также load() Для загрузки файла.
Анализатор XML в Firefox и других браузерах
Ниже приведен фрагмент JavaScript, который загружает документ XML ("books.xml) Загрузите анализатор:
xmlDoc=document.implementation.createDocument("","",null); xmlDoc.async="false"; xmlDoc.load("books.xml");
Комментарий к коду:
- первой строкой создается пустой объект XML-документа
- второй строкой отключается асинхронная загрузка, чтобы убедиться, что анализатор не продолжит выполнение скрипта до полного загрузки документа
- третьей строкой告知 анализатор загружать документ под именем "books.xml"
Ниже приведен фрагмент JavaScript, который загружает строку под именем txt в анализатор:
parser=new DOMParser(); xmlDoc=parser.parseFromString(txt,"text/xml");
Комментарий к коду:
- первой строкой создается пустой объект XML-документа
- второй строкой告知 анализатор загружать строку под именем txt
Примечание:Internet Explorer использует loadXML() метод для анализа строки XML, а другие браузеры используют DOMParser объект.
Анализ XML-файла - пример для всех браузеров
Ниже приведен пример, который анализирует документ XML ("books.xml) Загрузите анализатор XML:
<html> <body> <script type="text/javascript"> try //Internet Explorer { xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); } catch(e) { try //Firefox, Mozilla, Opera и т.д. { xmlDoc=document.implementation.createDocument("","",null); } catch(e) {alert(e.message)} } try { xmlDoc.async=false; xmlDoc.load("books.xml"); document.write("xmlDoc is loaded, ready for use"); } catch(e) {alert(e.message)} </script> </body> </html>
Ошибка: Access Across Domains
Из соображений безопасности современные браузеры не позволяют доступ к ресурсам разных доменов.
Это означает, что веб-страница и XML-файл, который она пытается загрузить, должны быть расположены на одном и том же сервере.
Файл XML, открытый примером на CodeW3C.com, находится в домене CodeW3C.com.
Если вы планируете использовать приведенный выше пример на своем веб-сайте, то XML-файл необходимо поместить на свой сервер. В противном случае xmlDoc.load() вызовет ошибку "Access is denied".
Анализ строки XML - пример для всех браузеров
Ниже приведен код, который загружает и анализирует строку XML:
<html> <body> <script type="text/javascript"> text="<bookstore>" text=text+"<book>"; text=text+"<title>Harry Potter</title>"; text=text+"<author>J K. Rowling</author>"; text=text+"<year>2005</year>"; text=text+"</book>"; text=text+"</bookstore>"; try //Internet Explorer { xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async="false"; xmlDoc.loadXML(text); } catch(e) { try //Firefox, Mozilla, Opera и т.д. { parser=new DOMParser(); xmlDoc=parser.parseFromString(text,"text/xml"); } catch(e) {alert(e.message)} } document.write("xmlDoc is loaded, ready for use"); </script> </body> </html>
Примечание:Internet Explorer использует метод loadXML() для анализа строки XML, а другие браузеры используют Объект DOMParser.
- Предыдущая страница Дерево узлов DOM
- Следующая страница Загрузка DOM