Работа с XML


В настоящее время формат XML (Extensible Markup Language, расширяемый язык разметки) — одна из самых активно используемых технологий. Зайдя в книжный магазин, вы, наверное, поразитесь количеству книг, посвященных XML. С распространением Интернета обмен данными между разными платформами стал необходимостью для программ, работающих с данными. Это и послужило поводом для создания XML.

Разработка XML началась в 1996 г. и была стандартизирована организацией W3C (World Wide Web Consortium). На самом деле, XML не представляет собой ничего нового и просто является упрощенной версией языка SGML, разработанного в начале 80-х. Разработчики XML переняли из него все самое лучшее, с учетом опыта языка HTML, и создали нечто, по своей мощности не уступающее SGML, но, вместе с тем, гораздо удобнее и проще как для понимания, так и для использования.

XML не имеет лицензии, что позволяет бесплатно использовать этот формат в своих программах. Всеобщая поддержка XML исключает зависимость от отдельной фирмы или платформы, оказывающей поддержку для XML. Так как XML-документ представляет собой текст в формате ASCII или Unicode, то он является читабельным и для человека. XML-документ может быть изменен при помощи простых текстовых редакторов, например, программой Notepad (Блокнот) из стандартного набора ОС Windows.

Основные понятия и структура XML-документа

XML — это средство хранения структурных данных в текстовом файле. Примером структурированных данных являются: адресная книга, генеалогическое дерево, информация о продуктах и т. д. XML очень похож на HTML. Язык XML описывает структуру самого документа без детализации его отображения. Также следует заметить, что XML гораздо строже, чем HTML, например, при ошибке спецификация XML запрещает приложению, работающему с XML-документом, предпринимать попытку корректировки. В подобных случаях приложение должно прекратить считывание дефектного файла и сообщить об ошибке.

Например, упрощенный вариант XML-документа, который представляет собой структуру адресной книги, предназначенную для хранения имен, телефонов и адресов электронной почты, мог бы выглядеть следующим образом:


<?xml version = "1.0"?> 
<!-- My Address Book --> 
<addressbook>
    <contact number = "1"> 
        <name>Piggy</name> 
        <phone>+49 631322187</phone> 
        <email>piggy@mega.de</email> 
    </contact> 
    <contact number = "2">
        <name>Kermit</name>
        <phone>+49 631322181</phone> 
        <email>kermit@mega.de</email> 
    </contact> 
</addressbook> 

Любой XML-документ начинается с заголовка, говорящего о принадлежности к этому формату и указывающего номер версии. Сам XML-документ состоит из множества элементов (elements). Имена элементов заключаются между символами < и >, образуя теги. Теги нужны для обозначения границ элемента. Например, начало элемента обозначается открывающим тегом <name>, а конец — закрывающим </name>. Между этими тегами может находиться содержание, например <name>Piggy</name>, но это необязательно.

Иногда встречаются элементы, не имеющие содержания, например — <empty></empty>. Для подобных случаев спецификация XML предусматривает сокращенную форму — например, предыдущую надпись можно заменить на <empty/>. Может показаться, что подобные теги не могут содержать информацию, но это не так — информацию можно сохранить при помощи атрибутов, следующих за именем элемента. Например, <empty number = "1"></empty> или <empty number = "1"/>. Комментарии представляют собой от одной до нескольких строк текста, ограниченных тегами <!-- и -->.

Основные отличия тегов HTML от тегов XML заключаются в следующем:

  • теги используются только для сохранения информации, а интерпретация этих данных целиком лежит на приложении, которое их считывает. Например, в XML тег <р> необязательно является тегом параграфа, как у HTML, а может обозначать, например, properties (свойства);
  • для описания документов можно использовать теги с любыми подходящими названиями. Следует учитывать, что строчные и прописные буквы в именах различаются, так, например, <Tag></Tag> и <tag></tag> являются разными тегами.

На рисунке показана часть графического эквивалента структуры. Обратите внимание, что элементы XML-документа задают иерархическую структуру в виде дерева.

{рисунок}

Читать далее: XML и Qt