
- •По курсу «Интернет-программирование»
- •Принципы построения xml
- •Кратко об xml
- •Разметка xml документа
- •Правила описания элементов и атрибутов
- •Обработка xml
- •Библиотеки обработки xml
- •Разбор xml с помощьюPhp
- •Разбор xml с помощьюJavaScript
- •Разбор xml с помощью Java
- •Объект xmlHttpRequest
- •Кроссбраузерное создание объекта запроса
- •Использование xmlhttpRequest
- •Синхронный xmlHttpRequest
- •Асинхронный xmlHttpRequest
- •Не используйте синхронные запросы
- •Методы объекта xmlHttpRequest
- •Свойства объекта xmlHttpRequest
- •Get и post-запросы. Кодировка.
- •Запросы multipart/form-data
- •Кодировка (языковая)
Библиотеки обработки xml
PHP
libxml - основная библиотека (включена по умолчанию)
simplexml - более простая и легкая библиотека
JavaScript
XMLHttpRequest - объект браузера для работы с XML (включен)
JQuery - распространенная универсальная библиотека
Java
javax.xml.parsers.* - создание (загрузка) и парсинг (разбор)
org.w3c.dom.* - перемещение по DOM документа
org.xml.sax.SAXException - генерация событий при чтении документа
Разбор xml с помощьюPhp
Библиотека libxml содержит 19 классов для разбора XML документа, основными из которых являются:
DOMDocument – загрузка и валидация XML + некоторые преобразования (напр. в HTML)
DOMNode – обеспечивает перемещение по DOM XML документа или его части, полученной фильтром по некоторому условию, например по названию элемента (тега)
DOMElements — расширяет DOMNode. Обеспечивает все методы DOMNode, а также фильтрацию элементов и работу с атрибутами
Код 1. Валидация и получение значений атрибутов id и year из файла portfolio.xml
<?
$dom = new DOMDocument;
$dom->Load('portfolio.xml');
//Для XML-shema
if (!$dom->schemaValidate('portfolio.xsd')) {
echo '<b>DOMDocument::schemaValidate() Generated Errors!</b>';
}
$elems = $dom->getElementsByTagName('project'); //Получаем список элементов project
foreach ($elems as $temp) {
echo $temp->tagName." / ".$temp->getAttribute('id')." / ".$temp->getAttribute('year');
}
?>
Документацию по методам и свойствам классов libxml можно посмотреть по адресу http://fi2.php.net/manual/ru/refs.xml.php или воспользоваться локальной документацией в формате файла chm, загруженную в папку soft папки Интернет-программирование, содержащей лабораторные работы курса. При локальном использовании документации в формате chm возможны проблемы с отображением страниц с документацией. В этом случае следует открыть свойства файла и установить галочку в пункте «Разблокировать». См. Рис.1.
Рис.1.
Разблокировка документации.
Документация по libxml находится в разделе «Справочник функций» см. рис. 2.
Рис. 2. Местоположение документации по обработке XML
Разбор xml с помощьюJavaScript
В JavaScript для разбора XML документов используется объект XMLHttpRequest. Документация по свойствам и методам объекта XMLHttpRequest приведена в Приложении 1.
Код 2. Получение значений атрибутов id и year из файла portfolio.xml
<script>
var url = "http://bitrixtest.ru/sgml/portfolio.xml";
var parse_xml;
var xml=new window.XMLHttpRequest();
xml.open("GET", url, true);
xml.send(null);
xml.onreadystatechange = function() {
if (xml.readyState == 4) {
if(xml.status == 200) {
parse_xml = xml.responseXML;
var projects=parse_xml.getElementsByTagName("project");
if(projects) {
for(var i=0; i<projects.length; i++) {
project=projects[i];
console.log(
"project"
+ " | "+ project.getAttribute("id")
+ " | "+ project.getAttribute("year")
);
}
}
}
}
};
</script>