Как открыть XML-документ – особенности работы с XML-файлами. Файл XML: что это такое и как его открыть

Я думаю, что Вы уже представляете себе, зачем нужен HTML (да, HTML ). Он нужен для представления данных в браузере. То есть имеется HTML-код и соответствующий этому HTML-коду определённый вид. Однако, современные тенденции требуют не просто отображения данных, но ещё и их грамотной внутренней структуры.

Вот именно для создания структуры и существует язык XML . Простой пример:

Зелёное яблоко

Для нас людей сразу всё становится понятно. В голове возникает сразу образ "зелёного яблока ", однако, как объяснить компьютеру, что это яблоко, а не апельсин, человек или наша галактика? Здесь вновь приходит на помощь XML , где мы можем создавать любые теги, давая чётко понять, где яблоко, где апельсин, где человек, а где наша галактика. Надеюсь, понятно объяснил.

Теперь о самом главном. Главная особенность XML - это его универсальность . То есть XML понимает любой современный язык. А так как XML - это текстовый файл , то с ним можно работать и в обычном блокноте. Теперь конкретно к практике, где используется XML :

  • Файл-настроек . Настройки в XML-файле очень легко считывать и записывать. По этой причине на Вашем компьютере находятся сотни XML-файлов .
  • Мост для обмена данными между программами, написанными на разных языках. Очень важная особенность, следующая из универсальности языка, и это регулярно используется в сложных системах.
  • Хранение данных . Фактически, это некий аналог базы данных, но не требующий СУБД (например, MySQL ). А благодаря языку запросов XPath становится возможным легко общаться с этой "базой данных ".

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

11 ответов

Я пытаюсь сделать несколько резюме моего опыта работы с XML:

Pros

Формат для чтения:

Каждый может проверить свой контент, просто прочитав его. Это делает его простой в использовании и понятной форме общения. Даже деловым людям нравится это (насколько я знаю в финансовых институтах в течение многих лет), поскольку они это понимают, и они могут легко проверять сообщения, например, в системах обмена сообщениями. Только они могут решить, какая система ошибается. Делает их счастливыми:) Сравните это с JSON . Я думаю, JSON далека от дружественной к читателю, поскольку закрытие скобок сложнее отслеживать, чем закрытие элементов в XML. Вы должны вернуться к странице, чтобы узнать, что было началом. Вам не нужны навыки программирования для понимания XML. Даже ваша бабушка может понять это через полчаса.

Независимость платформы:

Неважно, какой язык и платформа вы используете, у вас обязательно будет синтаксический анализатор, чтобы его прочитать. Это делает его, вероятно, лучшей формой связи между гетерогенными системами. Посмотрите, что люди обычно переносят XML файлы поверх очередей JMS, отправляют XML файлы в веб-службы, они переносят объекты в документы XML перед транспортировкой. XML - это настолько фундаментальный материал, что нет больших проблем с разными парсерами. Все они понимают XML.

Великие инструменты для преобразования

Отличный инструмент для проверки с помощью

Против

Многословность

Он может потреблять любое дисковое пространство. XML файлы делают журналы большими и трудными для чтения и извлечения. С другой стороны, вы можете сжимать журналы. Даже веб-службы или сообщения JMS могут быть сжаты, чтобы уменьшить нагрузку на канал. Но даже в этом случае сжатие - это издержки процессора и памяти. С другой стороны, в моем опыте XML и смежные технологии могут сократить развитие, и то, что вы экономите в мандатах, достаточно далеко, чтобы купить еще один процессор. Процессоры дешевле людей.

Неэффективное использование

Далеко не тривиально, какие объекты (выражения XPath, шаблоны XSL, схемы XSD, синтаксические анализаторы XML и т.д.) имеют какой жизненный цикл. Что можно кэшировать? Многие люди не делают это правильно, чтобы избежать проблем безопасности нитей. И это приведет вас к ужасной медлительности. И я хочу подчеркнуть, что это не проблема технологии, а неправильное использование . Многие люди застряли в старом партере DOM, который является уродливым. Они абстрагировали некоторый слой над ним и создали собственные API для обработки XML, что плохо. Двигайтесь дальше, используйте DOM4j или STAX или JAXB или что-то стандартное.

Ложная свобода создания чего-то особенного

Многие компании создали языки, специфичные для домена, или ужасные конфигурационные файлы с XML. Поскольку это легко разобрать и пройти, они создали даже переводчиков для совершенно нового языка. Язык застрял, и запланированные инструменты разработки никогда не создавались. Никогда не используйте XML для создания программ. Его нельзя использовать. Не программируйте в XPath, так как это не проверенное время разработки. Держите вещи на месте. XML в основном предназначен для транспортировки данных в некоторой стандартной форме. Не изобретайте колесо в XML. Это было бы программным креслом для себя, а не автомобилем.

Лучшие учебники по XML находятся на ZVON Я думаю. Используйте их, если хотите.

В качестве общей формы для передачи данных. Это были 90-е годы, и все метки были яркими!

Там много гибкости и мощности, включая возможность проверки XML файла; но я думаю, что интересно, что за последние годы появилось несколько гораздо более легких альтернатив (например, JSON). То есть. возможность чтения/записи данных в удобочитаемой форме представляется более важной, чем все эти материалы для проверки, для большинства приложений.

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

Действительно, что это.

Что касается его "предполагаемого использования": ну, это немного субъективно. Он может использоваться для сериализации, обмена данными, разметки документа или любого другого. Действительно, он может использоваться практически для любых целей, связанных с цифровыми данными.

XML на самом деле является контейнером, где вы можете размещать структурированные текстовые данные, и это охватывает множество различных возможных применений, например текст с семантической структурой. Структура также может рассматриваться как дерево, поэтому вы можете иерархически организовывать вещи.

Он может быть проверен на основе формальных правил грамматики (DTD, XSD...), преобразованных в другую древовидную структуру (XSLT), данные могут быть извлечены различными способами, такими как языки запросов (XQuery), XML может быть построен из дерево (DOM) и многое другое.

Эти технические возможности открываются для множества функций в различных областях, таких как хранение данных, сетевая связь, организация процессов (здесь вы найдете свои файлы конфигурации) и т.д.

Как говорили другие, XML - хороший стандарт для обмена информацией между различными приложениями. Это в основном эсперанто для обмена данными.

Одна вещь, которую никто не любит в XML, - это многословие. Человек потеряется во всех этих тегах, если имеется более 2-3 уровней отступов. И нет, вы не перестаете видеть все те теги через некоторое время, как люди с круглыми скобками Lisp.

Кроме того, XML имеет очень "предпринимательское" чувство. Это означает, что крупные корпорации любят это, потому что это стандарт. Но это не значит, что это хорошо для любой ситуации. И не думайте, что синтаксический анализ происходит быстро, потому что аппаратное обеспечение существует только для того, чтобы анализировать XML быстрее, чем использовать только программное обеспечение...

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

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

По существу, стандартизация дает возможность взаимодействовать между собой разнородным предметам – фонарику и батарейкам, Macromedia Flash и серверу многопользовательской игры, и так далее. Также и во Всемирной сети, где каждую секунду перемещаются огромные объемы данных, чрезвычайно важно стандартизировать способы обмена данными между системами. Мощный и простой в использовании XML очень быстро становится таким общепринятым стандартом.

В этом уроке мы познакомим вас с основами формата XML , а также покажем, как можно использовать во Flash объекты XML и XMLSocket . К концу урока вы научитесь организовывать "общение" Flash с ASP -страницами для регистрации входа пользователей; также мы с вами создадим простой чат, работающий в реальном времени с использованием сокет -сервера.

Что будет изучаться

В этом уроке :

  • Формат XML
  • Отсылка XML-данных на сервер и загрузка их с сервера
  • Создание нового объекта XML
  • Применение методов, свойств и событий объекта XML
  • Организация соединения с сокет -сервером при помощи Flash

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

Время выполнения

На выполнение этого урока требуется примерно полтора часа.

Файлы урока

Файлы-носители :

Стартовые файлы :

Lesson12/Assets/LoginRegister1.fla Lesson12/Assets/Chat1.fla

Законченные проекты :

LoginRegister2.fla Chat2.fla

Основы xml

Хотя само название XML , или eXtensible Markup Language , звучит несколько таинственно, понять и освоить этот язык совсем несложно. В сущности, XML есть способ форматирования и структурирования информации, которую приложения-получатели могут интерпретировать и использовать. На самом деле все мы, быть может, сами о том не подозревая, имеем большой опыт структурирования и организации информации. Возьмем такой пример.

Когда вы хотите написать другу письмо , вы должны структурировать свои мысли (информацию) в таком формате, который ваш друг сможет распознать. Итак, вы начинаете писать слова на листе бумаги, начиная с левого верхнего угла и разделяя свои мысли на абзацы, предложения и слова. Конечно, вы могли бы писать не слева направо, а как-нибудь по кругу, или вообще попытаться передать свои мысли картинками, однако такой способ, скорее всего, лишь приведет вашего друга в недоумение. А написав письмо в таком формате, который вашему другу привычен, вы сможете быть уверены в том, что ваше послание будет понято – то есть передача ваших мыслей (данных, информации) получателю письма совершится успешно.


Для того же предназначен и XML – это формат для передачи информации. Если, к примеру, нужно переслать данные из Flash на веб-сервер для обработки, следует сначала представить эти данные в формате XML . Тогда сервер сможет надлежащим образом интерпретировать эти данные и использовать их. Без этого сервер , получив несколько порций данных, не знал бы, что ему делать с первой порцией, что со второй, и какое вообще отношение имеет первая порция ко второй. Благодаря XML эти разрозненные части данных наполняются смыслом, и сервер может понять, как с ними работать.

В синтаксисе XML , подобно HTML , используются теги, атрибуты и значения – но на этом сходство и заканчивается. Тогда как в HTML используются заранее определенные теги (например, body, head или html ), в XML пользователь создает свои собственные, а не выбирает готовые имена из библиотеки. Давайте для начала рассмотрим вот этот простой документ XML :

Kelly Makar Mike Grundvig Free Makar

Каждый тег XML называется узлом ( node ), набор данных в формате XML называется документом XML . В нашем документе-примере имеется корневой узел MyFriends и три дочерних узла. Каждый XML-документ может содержать только один корневой узел. Первый из дочерних узлов имеет имя узла Name и значение узла Kelly Makar . Слово Gender в каждом из дочерних узлов – атрибут . Атрибуты необязательны; каждый узел может иметь неограниченное число атрибутов. Обычно атрибуты используются для размещения небольших порций информации, которые необязательно отображать на экране (например, идентификационный номер пользователя).


Как вы видите в этом примере, теги (которые мы сами же создали и описали) придают смысл порциям информации (Kelly Makar, Mike Grundvig и Free Makar).

Следующий XML-документ являет более сложный пример структурирования.

Kelly Makar 121 Baker Street Some City North Carolina Tripp Carter 777 Another Street Elizabeth City North Carolina

В этом примере показано, как могут выглядеть данные адресной книги в формате XML . Если бы в нашей адресной книге числилось 600 человек, то узел Person повторялся бы 600 раз при той же самой структуре.

Каким же образом следует создавать свои узлы, свою структуру? Как объект -получатель ( ASP -страница, сокет и т.п.) распознает форматирование документа? Ответ прост – средства для этого должны быть встроены в объект -получатель. Например, если мы создали адресную книгу во Flash и хотим поместить содержащуюся в ней информацию в базу данных, нам следует послать версию нашей книги в формате XML на ASP -страницу (или другую страницу сценария), которая сможет проанализировать информацию и разместить данные в соответствующих полях базы данных . Вы должны понимать, что этот скрипт ASP -страницы должен быть заранее разработан так, чтобы обработать данные должным образом. XML больше приспособлен для передачи информации, чем для хранения; поэтому данные нашей адресной книги удобнее хранить в записях базы данных , чем в виде XML -документа. Когда понадобится, информацию можно будет извлечь из базы данных , с помощью специального скрипта перевести в формат

Достаточно часто многие пользователи современных компьютерных систем и программных продуктов разного типа сталкиваются с файлами, имеющими расширение.xml. Многие просто не представляют себе, что это за документ, как его открыть. Сейчас будет рассмотрено, Заодно выясним, что же он собой представляет и для чего нужен.

Что представляет собой файл XML

Начнем, пожалуй, с того, что, с точки зрения современных компьютерных технологий и программ, используемых для создания документов такого типа, представляет собой текстовый файл, в котором прописаны команды универсального расширяемого языка (Extensible Markup Language), который достаточно сильно напоминает известное средство разметки HTML.

Как правило, файл XML содержит общую информацию о каком-либо объекте, которая выражена описательными средствами (об этом несколько позже). Что же касается данных, хранимых в таких контейнерах, это могут быть базы данных, часто используемые для каталогов видео и аудио в Интернете, сохраненные пользовательские настройки программ и приложений, а также веб-страницы целиком.

В качестве примера можно взять, скажем, аудио-альбом какого-то исполнителя. Файл XML включает в себя информацию о годе выпуска, жанре, количестве и названиях треков, популярности и т. д. Правда, при посещении ресурсов во Всемирной паутине серферу не нужно задумываться о физическом открытии такого информационного файла, поскольку даже при воспроизведении песни онлайн в проигрывателе будут отображаться все данные по типу тех, которые содержатся в стандартных MP3-файлах в виде ID3-тегов. Информация как бы подгружается к воспроизводимому треку.

Вид XML-файла

Если посмотреть на вид файла, можно сразу заметить, что в нем свойства любого объекта описаны при помощи тегов и атрибутов, которые задаются вручную.

Об основных командах самого языка речь сейчас не идет, поскольку рядовому юзеру такие сведения и не нужны. Единственное, что можно отметить, так это только то, что определенного количества используемых для описания объекта элементов в данном формате не существует: сколько нужно, столько и задается.

Чем открыть стандартный XML-формат

Теперь посмотрим, как открыть файл XML. Как уже, наверное, многие поняли, это файл текстовый, а значит, проще всего использовать для его просмотра или редактирования любой, пусть даже самый примитивный редактор. Да хоть тот же «Блокнот» из стандартного набора Windows.

Однако здесь не все так просто. Дело в том, что по двойному клику файл без задания соответствующей ассоциации с какой-либо программой не откроется. В лучшем случае система предложит список наиболее подходящих приложений. Можно выбрать программу по своему усмотрению, а заодно поставить галочку напротив пункта постоянного использования выбранного приложения для всех файлов такого типа.

Можно поступить иначе, используя правый клик на файле с последующим выбором команды «Открыть с помощью…», после чего, опять же, выбрать нужное приложение либо из списка, либо указать местоположение основного исполняемого компонента (чаще всего это файл EXE).

Третий способ, позволяющий открыть файл XML, состоит в начальном запуске программы, а затем в использовании меню открытия файла (в большинстве случаев это сочетание Ctrl + O). При этом совершенно необязательно использовать «Блокнот». Пожалуйста, файл открывается без всяких проблем в том же приложении Word и ему подобных. Даже «майкрософтовский» Excel способен открывать данные такого формата.

Впрочем, если возникает необходимость редактирования XML-формата, тогда лучше применять профессиональные утилиты с поддержкой языкового синтаксиса, например, Oxygen XML Editor, XML Marker или EditiX Lite Version. Естественно, это далеко не все утилиты, способные работать с языком файла на высшем уровне. Сегодня таких программ можно найти очень много.

Теперь несколько слов о том, почему иногда появляется ошибка XML-файла при открытии. Чаще всего это связано с нарушением целостности самого файла, а также с некорректным введением описательных атрибутов или тегов. Кроме того, в Excel существует ограничение по лимиту отображаемых строк, так что в этом случае данные при открытии могут быть неполными.

Возможные ошибки при открытии XML-файла в виде вложения электронной почты

Иногда ошибки могут появляться, когда производится попытка открытия файла, являющегося вложением электронного сообщения. Чащу всего это относится к стандартным почтовым клиентам вроде Outlook Express.

Дело в том, что сначала вложение сохраняется в виде временных данных (очень часто с добавлением к основному расширению дополнительного.tmp), и обращение производится именно к нему.

Чтобы избежать такой ситуации, достаточно просто изначально сохранить вложение в оригинальном формате в любое удобное место на диске или на съемном носителе, после чего использовать описанные выше стандартные методы.

Вместо итога

Как видим, ничего сложного в понимании структуры и способов открытия файлов такого формата нет. Здесь, правда, принципиально не рассматривался вопрос создания XML-данных, поскольку для полного понимания процесса нужно знать хотя бы азы самого языка. В остальном же, думается, сложностей с файлами такого формата у пользователей не возникнет.

Рассмотрим технологию использования XML для передачи данных на сервер.

Мы уже рассмотрели 2 способа передачи данных на сервер: это простой текст с разделителем и JSON. Но у них есть недостатки:

  • Отсутствие типов данных. У JSON есть только строка, число, null, boolean. Т.е. ограниченный набор данных.
  • Сложно контролировать целостность передаваемых данных.
  • Сложно визуализировать данные, т.е. сложные объекты сложно отобразить, например, в виде html кода.
  • Сложно преобразовывать данные, т.е. сложно преобразовать свойства одного объекта в свойства другого объекта.

Теперь обратимся в XML как способу передачи данных. XML (eXtensible Markup Language) - язык разметки, предназначенный для описания, хранения и передачи структурированных данных. На сегодня XML используют повсеместно.

На базе XML существует много технологий: DOM (програмное взаимодействие с данными), XLink (указатели и ссылки), XPath (описание и выборка элементов), XSL, XSLT (преобразование XML документа).

Разбор XML пакета выглядит так:

//Объект XMLHttpRequest var req= getXmlHttpRequest (); //Установка обработчика req. onreadystatechange= function () { if (req. readyState== 4 ) { //состояние "4 - comlete" var xml= req. responseXML; }}

Здесь даже сериализацию и десериализацию делать не надо. Это делает сам объект. Как только сервер присылает XML данные, они уже в распарсенном виде (responseXML - DOM модель документа). Подробнее о технологии DOM читайте в предыдущих статьях на сайте.

Иногда для отладки надо сделать сериализацию и десериализацию XML данных (для передачи данных на сервер это делается автоматически, вручную не надо делать). Сделаем сериализацию в строку:

//для IE var str = dom. xml //для Firefox var serializer = new XMLSerializer (); var str = serializer. serializeToString (dom);

Для IE рабочий код короче, т.к. в него уже встроен объект для сериализации, а в других браузерах только появляется объект XMLSerializer для сериализации.

При работе с XML данными обычно мы имеем дело с DOM моделью документа. Поэтому стоит вспомнить некоторые моменты DOM (об этом читайте в предыдущих статьях). Напомню только способы доступа к элементу DOM модели:

//корневой элемент var root = xmlDOM. documentElement; //первый элемент в коллекции var book = root. childNodes[ 0 ]; //дочерний элемент var title = book. childNodes[ 0 ]; //текстовый узел элемента alert (title. firstChild. nodeValue);

Также из DOM модели документа можно выбирать элементы одного типа. Внимание! Функции getElemensById - нет, т.к. в XML id может означать что угодно, а не только идентификатор, поэтому его не применяют.

//выборка всех элементов с одним тегом var books = xmlDOM. getElementsByTagName ("book" );

XML также активно используется не только для представления данных, но и для обмена данными в сервер-ориентированной архитектуре. Это такой подход, при котором мы представляем сложное приложение не как классическое клиент-серверное приложение, а как набор сервисов (служб), каждый из которых отвечает за свои задачи. И каждый сервис имеет точки входа (точки взаимодействия). Здесь нет четкого клиента, т.к. одна служба может быть клиентом другой службы. Получается такая распределенная технология. Есть несколько подходов к построению таких технологий - удаленный вызов процедур, SOAP.

Чтобы службы разных клиентов могли взаимодействовать, они должны говорить на одном языке (при этом не важно какая операционная система у службы). И такой язык был разработан и назван RPC.

Протокол XML-RPC

RPC (Remote Procedure Call) - удаленный вызов процедур. Это протокол взаимодействия между двумя удаленными точками. Он позволяет точке “а” вызвать функцию на удаленной точке “б”.

Есть несколько реализаций протокола RPC. Рассмотрим реализацию на базе XML.

По сути, клиент и сервер просто обмениваются какими-то XML фрагментами.

XML-RPC предоставляет следующие типы данных:

  • boolean.
  • integer.
  • double.
  • string.
  • date/time.
  • base64.
  • array.
  • struct.
  • null.

Т.е. при передаче определенного типа данных нужно декларировать, что это за тип данных. Структура похожа на объект JSON.

Преобразование XML данных

Для преобразования данных, полученных с сервера в виде XML используют XSLT.

XSLT (eXtendable Stylesheet Language Transformation) - технология, которая помогает получить на вход XML, а на выходе сформировать все, что угодно.

Преобразование XSLT на javaScript - IE

var dom = new ActiveXObject ("MSXML2.DOMDocument" ); dom. async = false; dom var xsl = new ActiveXObject ("[email protected]" ); xsl. async = false; xsl. load ("my.xsl" ); //само преобразование var result = dom. transformNode (xsl);

Преобразование XSLT на javaScript для Firefox. Ghrome, Opera

var xslStylesheet; var xsltProcessor var myXMLHTTPRequest = mew XMLHttpRequest (); myXMLHTTPRequest. open ("GET" , "example.xsl" , false); myXMLHTTPRequest. send (null); //получение xml xslStileshett = myXMLHTTPRequest. responseXML; xsltProcessor myXMLHTTPRequest = new XMLHttpRequest (); myXMLHTTPRequest. open ("GET" , "example.xml" , false); myXMLHTTPRequest. send (null); //сама трансформация var xmlSource = myXMLHTTPRequest. responseXML; var resultDocument = xsltProcessor. transformToDocument (xmlSource);