Чем работать с XML - обзор онлайн-сервисов и xml редакторов. Чтение данных из файла

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

Конечно, фантастика, но для структуризации в программировании был придуман специальный язык (xml ). А для редактирования данных, представленных в этом формате, созданы специализированные xml редакторы:

Что такое XML

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

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

Все эти «недочеты » могут быть исправлены с помощью XML . Перед началом обзора редакторов xml давайте более подробно разберемся, что это за язык и какова область его применения в виртуальном пространстве:


Аббревиатура XML в переводе с английского означает «расширяемый язык разметки » (Xtensible Markup Language ). Он стандартизирован и рекомендован к использованию W3C . А это значит, что его применение является наиболее оптимальным и «беспроблемным » способом создания веб-документа.

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

Язык расширяемой разметки обладает следующими положительными сторонами:

  • Является идеальным средством для описания структуры и разметки любого веб-документа;
  • В XML нет ограниченного набора элементов, с помощью которых осуществляется структуризация. Вместо этого пользователь сам задает иерархию и имена всех элементов, опираясь лишь на правила описания языка;
  • XML обладает простым, понятным, а главное расширяемым синтаксисом;
  • Язык построен на основе основных кодировок Юникода;
  • Широко применяется не только для описания обычных веб-страниц, но и легко подключается к коду большинства языков программирования. В том числе и тех, которые используются в веб-программировании (PHP, ASP. NET и другие ).

Синтаксис XML

Каждый документ, написанный на XML , состоит из сущностей. Сущность – это самая маленькая единица (элемент ). Каждая из сущностей содержит в себе символы.

Они делятся на:

  • Символы разметки — теги, комментарии (< тег>, );
  • Буквенные символы – из них состоит основное содержимое, заключенное между тегами.

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

Hello, world!

Кроме корневого элемента XML документ состоит из пролога. Он расположен в самом начале кода. В состав пролога могут входить:

  • Объявления;
  • Инструкции обработки;
  • Комментарии.

Более наглядно основные составляющие XML показаны на следующем скриншоте документа, созданного в простом xml редакторе:


Более подробно с синтаксисом языка можно ознакомиться с помощью технической документации к XML .

Обзор редакторов для XML

  • Microsoft Visual Studio – представляет собой мощную среду разработки, объединившую в себя большое количество инструментов и средств для написания программного кода. В ее состав также входит «навороченный» редактор XML . Кроме всего прочего он поддерживает создание и визуализацию XML схем. К сожалению, в Visual Studio поддержка PHP реализована слабо. Эта среда больше «заточена » под создание веб-приложений с помощью ASP.NET :


  • Adobe Dreamweaver – еще одна мощная среда разработки. Весь ее инструментарий полностью направлен на создание сайтов. Поддерживается синтаксис нескольких языков программирования. В состав Dreamweaver также входит встроенный редактор xml таблиц:


  • XMLSpy XML Editor – мощное средство для работы с различными форматами данных XML. Поддерживается не только простое редактирование данных, схем, подсветка синтаксиса, но и графическая визуализация иерархических связей между элементами:


Визуальный xml редактор доступен в двух редакциях стоимостью 399 и 799 евро. Самый дорогой вариант включает в себя поддержку синтаксиса нескольких языков программирования и отладчик. Более дешевый вариант полностью совместим с наиболее популярными средами разработки (Visual Studio, Eclipse ), и может выступать в качестве их полноценной надстройки:


  • XML Notepad — бесплатный редактор xml . Имеет встроенную подсветку синтаксиса, средство валидации. А также поддержку построения схем. Приложение отличается простым и понятным интерфейсом:


Обзор онлайн-сервисов

  • XML Schema Generator – сервис позволяет из обычного документа XML создать схему (XSD ). Интерфейс сервиса отличается простотой и выполнен в черно-белых тонах. Кроме этого радует полное отсутствие рекламы;
  • xmlvalidation.com – данный ресурс позволяет произвести полную валидацию содержимого XML документа, скопированного в специальное поле или загруженного в виде файла:


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

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

Инструментальные средства редактирования, проверки корректности, форматирования, сравнения XML-файлов, а также средства поддержки XQuery, XPath, карт сайтов, схем и RSS-фидов

Часто используемые сокращения
  • API: Application Programming Interface (прикладной интерфейс программирования)
  • DITA: Darwin Information Typing Architecture (архитектура типизированной информации Darwin)
  • DTD: Document Type Definition (определение типа документа)
  • HTML: Hypertext Markup Language (язык разметки гипертекста)
  • IDE: Integrated Development Environment (интегрированная среда разработки)
  • URL: Uniform Resource Locator (унифицированный указатель ресурсов)
  • W3C: World Wide Web Consortium (консорциум WWW)
  • WSDL: Web Services Description Language (язык описания веб-сервисов)
  • XHTML: Extensible Hypertext Markup Language (расширяемый язык разметки гипертекста)
  • XML: Extensible Markup Language (расширяемый язык разметки)
  • XSLT: Extensible Stylesheet Language Transformations (расширяемый язык преобразований таблиц стилей)

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

В данной статье рассматриваются следующие категории инструментальных средств для работы с XML:

  • Программы для разработки и проверки XML-карт сайтов.
  • Генераторы RSS-фидов.
  • Генераторы XML-схем.
  • Программы для проверки корректности XML.
  • Программы форматирования XML.
  • Редакторы XML.
  • Инструментальные средства для работы с XML.
  • Инструментальные средства с открытыми исходными кодами для работы с XML.
  • Интегрированные среды разработки XML.
  • Средства сравнения XML
  • Инструментальные средства для работы с XQuery.
  • Инструментальные средства для работы с XPath.

Программа для создания XML-карт сайтов

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

Существует несколько генераторов карт сайтов:

  • Google SiteMap Generator автоматически генерирует карту сайта, основываясь на обновлениях и трафике вашего Web-сайта, развернутого на Web-сервере.
  • Gsite Crawler – это Windows-приложение для создания карт сайтов.
  • Кроме загружаемых инструментальных программ, карты сайтов можно генерировать с помощью различных интерактивных приложений; вот два примера:
    • Sitemaps Builder создает карты сайтов для Google, HTML и текстовых URL.
    • XML Sitemaps создает карты сайтов в форматах XML, ROR, Text или HTML.

Программы проверки корректности XML-карт сайтов

Программы проверки корректности карт сайтов используются для проверки карт, сгенерированных для Web-сайтов. Такая программа проверяет, подходит ли карта сайта для использования поисковой системой. Ссылки на все перечисленные инструментальные средства приведены в разделе .

Ниже приведен список программ проверки корректности карт сайтов:

  • Automapit sitemap validator проверяет корректность карты сайта, гарантируя ее соответствие критериям поисковых систем.
  • Sitemap XML validator проверяет карту сайта на корректность XML-кода, чтобы вы смогли исправить ошибки до ее отправки в поисковые системы.
  • XML sitemaps validator идентифицирует все проблемы карты для их устранения перед отправкой карты в поисковые системы.
  • Online Merchant sitemap checker проверяет корректность XML-заголовков в файле sitemap.xml.

Генераторы RSS-фидов

Новостные фиды RSS – это отличный способ держать посетителей вашего сайта в курсе последних изменений его содержимого. Генераторы RSS-фидов популярны, например, среди пользователей, которые хотят просматривать заголовки новостных сайтов (например, CNN) или знать о последних спортивных новостях. Ссылки на все перечисленные инструментальные средства приведены в разделе .

Разработчики Web-сайтов могут генерировать RSS-фиды при помощи следующих инструментальных средств:

  • IceRocket RSS builder – программа с простым интерфейсом, позволяющая добавлять темы, ссылки и содержимое с целью создания RSS-фидов для вашего Web-сайта.
  • Feedity создает RSS-фиды для Web-страниц, новостей или товаров.
  • RSSPect настраивает RSS-фиды для Web-сайтов, документов или подкастов.

Генераторы XML-схем

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

Доступные инструментальные средства:

  • Trang от ThaiOpenSource – программа, запускаемая из командной строки, генерирует XML Schema Definition (XSD) из XML.
  • XMLBeans – программа из проекта Apache, предоставляющая несколько функций, в том числе генерирование схемы при помощи inst2xsd (Instance to Schema Tool).
  • XML for ASP BuildXMLSchema – интерактивный генератор XML-схем.

Программы для проверки корректности XML

Экземпляры XML-кода можно проверять на соответствие их схемам. Ссылки на все перечисленные инструментальные средства приведены в разделе .

Используйте одно из следующих интерактивных инструментальных средств:

  • XMLValidation.com проверяет соответствие XML-документа XML-схеме или DTD, указанным в документе, либо, при отсутствии объявления схемы или DTD, проверяет синтаксис.
  • DecisionSoft.com Schema Validator проверяет корректность одной схемы и экземпляра документа и выводит список ошибок.
  • W3C XML validator – сервис проверки схем с URI пространства имен http://www.w3.org/2001/XMLSchema .

Программы форматирования XML

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

  • XMLIndent.com
  • X01 online xml formatter

Редакторы XML

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

  • Xerlin XML Editor – Java™-программа, которая создает и проверяет XML-содержимое. Редактор имеет открытый исходный код, поддерживает XSLT и может проверять XML на соответствие DTD и схемам.
  • Jaxe Editor – еще один XML-редактор с открытыми исходными кодами на языке Java. Поддерживает экспорт содержимого в формат PDF и предварительный просмотр HTML с использованием XSLT; работает на нескольких платформах.
  • XMLFox – бесплатный XML-редактор с программой проверки корректности, позволяющий создавать грамматически правильные XML-документы и схемы. Этот редактор поддерживает и другие операции с XML.

Инструментальные средства для работы с XML

XSLT-преобразования полезны при преобразовании одной формы XML в другую с использованием таблиц стилей. В этом могут помочь многочисленные инструментальные средства; в качестве примеров можно привести Tiger XSLT Mapper и Kernow. Ссылки на все перечисленные инструментальные средства приведены в разделе .

Tiger XSLT Mapper – программа для преобразования XML-структур, которую могут легко использовать новички. Она автоматически создает преобразования, которые можно редактировать, используя графический интерфейс, построенный по принципу перетаскивания.

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

Также полезны несколько интерактивных XSLT-программ:

  • XSLT Online Transformation
  • W3C Online XSLT 2.0 Service

Разработчики, предпочитающие подключаемые к браузеру плагины, могут использовать следующие полезные плагины для работы с XML:

Mozilla Firefox

  • XSL Results Add-on отображает результаты XSLT-преобразования (XSLT 1.0 или XSLT 2.0 through Saxon-B) документа.
  • XML Developer Toolbar добавляет в панель инструментов стандартные инструменты для работы с XML.

Google Chrome

  • XML Tree отображает XML-данные в удобном для пользователя виде.
  • XML Viewer – инструмент просмотра XML-документов для Google Chrome.

Инструментальные средства с открытыми исходными кодами для работы с XML

Пользователям, которые не могут купить коммерческие программы для работы с XML, будут полезны инструментальные средства с открытыми исходными кодами. Активная работа сообщества позволила создать очень хорошие программы для работы с XML. Ссылки на все перечисленные инструментальные средства приведены в разделе .

XML IDE iXedit предоставляет ряд функциональных возможностей для обработки XML-документов:

  • Проверка на соответствие DTD.
  • Автоматическое завершение кода с использованием DTD.
  • Пользовательские шаблоны.
  • Обработка XSLT.
  • Редактирование по частям.

Rinzo XML Editor – это XML-редактор, работающий в Eclipse. Среди его возможностей:

  • Поддержка пространства имен.
  • Автоматическое завершение тегов и атрибутов.
  • Проверка корректности XML.

Эти инструментальные средства предоставляют также возможности для работы с Java-элементами:

  • Автоматическое завершение названий классов.
  • Открытие определения класса.

XPontus XML Editor – это Java-программа с открытыми исходными кодами, обладающая следующими функциональными возможностями:

  • Форматирование и завершение кода.
  • XSL-преобразования.
  • Генерирование DTD и схемы.
  • Проверка корректности XML.

Интегрированные среды разработки XML

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

XMLSpy – это XML IDE для создания, редактирования и отладки XML, XML-схем, XSL/XSLT, XQuery, WSDL и SOAP. Дополнительные возможности:

  • Генератор кода.
  • Преобразователь файлов.
  • Отладчик.
  • Профайлер.
  • Поддержка интеграции в Visual Studio.NET и Eclipse IDE.
  • Мастер импорта из базы данных, позволяющий импортировать данные из Microsoft® Access®.

XML Marker – это XML-редактор, использующий синхронизированные табличное дерево (table-tree) и текстовый дисплей для отображения XML-данных в табличном и иерархическом виде. Эта программа может загружать очень большие документы (размером в сотни мегабайт и даже несколько гигабайт). Другие функциональные возможности:

  • Редактор с подсветкой синтаксиса.
  • Сортировка таблиц.
  • Автоматический отступ.
  • Проверка синтаксиса при вводе.

Liquid XML Studio – пакет из нескольких программ для работы с XML. Предоставляет следующие инструментальные средства:

  • Редактор XML-схемы.
  • Генератор кода связывания XML-данных.
  • Редактор WSDL.
  • Редактор XML.
  • Интеграция с Microsoft Visual Studio.
  • Тестовый клиент Web-сервисов.
  • Компоновщик XPath-выражений.
  • Генератор HTML-документации.
  • Редактор и отладчик XSLT.
  • Редактор больших файлов.
  • XML Diff – сравнение XML-файлов.

XML Editor – это полнофункциональная интегрированная среда разработки XML с поддержкой разнообразных операций, связанных с XML. Ее возможности будут полезны опытным пользователям. Перечислим некоторые из них:

  • Интеллектуальный редактор XML.
  • Проверка корректности XML.
  • Поддержка XSL/XSLT.
  • Поддержка XQuery.
  • Поддержка XPath.
  • XML-публикация из одного источника.
  • Поддержка документов Microsoft Office.

Stylus Studio предлагает следующие функциональные возможности:

  • Профайлеры XSLT и XQuery.
  • Поддержка EDI.
  • Инструментальные средства работы с корпоративными Web-сервисами.
  • XML-конвейер.
  • Взаимодействие XML-схемы с XSLT 2.0 и XQuery 1.0.
  • Средства публикации XML.

XML Notepad от Microsoft помогает разработчикам создавать XML-документы. Эта бесплатная программа содержит инструмент XMLDiff, который можно использовать для сравнения двух XML-файлов. Ее интерфейс прост и удобен в использовании. Программа работает на платформе.Net. Вот некоторые ее возможности:

  • Древовидное представление, синхронизированное с текстовым.
  • Поддержка пространства имен при копировании и перемещении текста.
  • Инкрементный поиск в древовидном и текстовом представлениях.
  • Поддержка перетаскивания при редактировании.
  • Неограниченное количество операций отмены изменений и повтора изменений при редактировании.
  • Поддержка поиска с использованием регулярных выражений и XPath.
  • Мгновенная проверка на соответствие XML-схеме.
  • Технология Intellisense (автодополнение), основанная на ожидаемых элементах, атрибутах и значениях перечисляемых простых типов.
  • Поддержка специализированных редакторов для типов данных date, dateTime, time и других типов, например, color.
  • Встроенный просмотрщик HTML.
  • Поддержка XInclude.

XML Copy Editor – это быстрый XML-редактор с поддержкой проверки корректности. Наличие вкладок позволяет редактировать несколько файлов одновременно. Другие функциональные возможности:

  • Проверка на соответствие DTD/XML Schema/RELAX NG.
  • Поддержка XSLT и XPath.
  • Форматированный вывод на печать и цветовая подсветка синтаксиса.
  • Свертывание и завершение тегов.
  • Импорт и экспорт документов Microsoft Word без потери информации.
  • Поддержка XHTML, XSL, DocBook и Text Encoding Initiative (TEI).

firstobject XML Editor – бесплатный XML-редактор. Позволяет напрямую редактировать XML-дерево, отображаемое на основании содержимого XML-документа. Позволяет загружать и обрабатывать большие файлы. Некоторые его функциональных возможностей редактора:

  • Быстрый, переносимый, основанный на CMarkup.
  • Не требует Java или MSXML.
  • Поддержка переноса строк.
  • Проверка на соответствие DTD на основе MSXML.
  • Переход на строку по номеру.
  • Отображение XPath.
  • Редактирование файлов в закладках.
  • Генерирование C++-кода.

XRay XML Editor – бесплатная интегрированная XML IDE. Эта программа проверяет корректность XML-документа при вводе. Имеет встроенную поддержку стандартов W3C. Также имеет HTML-просмотрщик для предварительного просмотра Web-страниц, созданных с помощью XML. Можно создавать три типа схем, включая XSD, DTD и External Data Representation (XDR). Среди других функциональных возможностей:

  • XSLT-обработка в режиме реального времени.
  • Проверка корректности схемы в режиме реального времени.
  • Интегрированное интерактивное учебное руководство по XML.

XMLSpear – бесплатный XML-редактор, написанный на языке Java и доступный для многих платформ. Обладает расширенными функциональными возможностями, такими как интерактивная проверка на соответствие схеме, расширенная панель XPath и др. XML отображается в трех различных форматах, включая древовидную таблицу, просмотр элементов и просмотр исходного кода. XMLSpear доступен в виде Web-программы на Java или в виде автономного приложения. Дополнительные функциональные возможности:

  • Поддержка XPath и XSLT.
  • Способность генерировать завершенные XML-документы из схемы.
  • Поддержка нескольких форматов кодирования.
  • Интегрированный текстовый и HTML-плагин.
  • Проверка на соответствие схеме или DTD в режиме реального времени.
  • Генерирование схемы из экземпляров XML.
  • Древовидный редактор для работы с узлами.

XMLmind – многофункциональный XML-редактор, использующий технологию Java и доступный для нескольких платформ. Более подходит опытным пользователям, а не новичкам. Представляет инновационный способ редактирования XML-документов и требует наличия Java-платформы. Среди функциональных возможностей XMLmind:

  • Преобразование XML-документов в HTML, PDF, Eclipse и многие другие форматы.
  • Наличие DITA-преобразователя.
  • Поддержка DocBook, JavaDoc, XHTML и встроенных шаблонов для них.
  • Поддержка создания MathML-документов.
  • Редактируемые команды.
  • Интегрированный анализатор XML и механизм XSLT.

ElfData XML Editor – программа для пользователей Mac OS. Эта среда XML IDE имеет поддержку Unicode и может выполнять проверку XML-документов на грамматическую правильность с DTD и без него. Доступны два режима представления: в виде дерева и в виде кода. Поддержка технологии drag-and-drop позволяет перетаскивать на документ XML-элементы. Поиск облегчается благодаря наличию двух режимов: поиск по коду и поиск по дереву. Среди других функциональных возможностей:

  • Совместимость с XML 1.0.
  • Интерфейс пользователя в стиле Macintosh.
  • Подробные сообщения об ошибках с предоставлением помощи в их отладке.
  • Функция "Send to Browser" (отправка в браузер), позволяющая просматривать документ в браузере.
  • Возможность сохранять страницы в виде XHTML с DTD.

XMetaL похож на текстовый процессор. Аналогично большинству XML IDE, он может выполнять проверку корректности XML-документов и поддерживает схемы, DTD и XInclude. Другие функциональные возможности:

  • Проверка орфографии и автоматическое завершение кода.
  • Поддержка вывода в формате Web-справки.
  • Способность преобразовывать XML-документы в PDF, HTML и многие другие форматы.
  • Коннектор XMetal интегрируется с системами управления контентом (CMS) и системами управления версиями, например, SVN.
  • Поддержка Unicode позволяет создавать XML-документы на различных языках.
  • Поддержка DITA (с такими возможностями, как визуализация и ориентированный на темы пользовательский интерфейс) для создания DITA-содержимого.

Средства сравнения XML

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

XML Diff & Merge может сравнивать файлы, каталоги и ZIP-архивы. После загрузки в программу исходного и целевого документов отображаются выделенные цветом различия; изменения в исходном и целевом файлах можно редактировать. Программа имеет много встроенных алгоритмов сравнения и способна автоматически выбирать алгоритмы на основе содержимого документа и его размера. Программа может выполнять пословное и посимвольное сравнение. При сравнении каталогов и архивов за основу сравнения можно выбрать следующие параметры:

  • Временная отметка.
  • Содержимое.
  • Двоичное сравнение.

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

ExamXML – это мощное средство визуального сравнения и синхронизации различий между XML-документами. Входным XML для сравнения может быть либо файл, либо поле из базы данных. ExamXML может также сравнивать и сохранять части XML-документа; также можно выполнять импорт или экспорт из документов Microsoft Excel®. ExamXML работает на различных версиях Microsoft Windows®. Другие функциональные возможности:

  • Проверка корректности XML на соответствие DTD и XML-схеме.
  • Нормализация дат и чисел.
  • Поддержка drag-and-drop.
  • XML-документы отображаются в виде дерева.

DeltaXML позволяет искать, сравнивать, соединять и синхронизировать изменения в XML-документах. Поддерживает Java API, что облегчает программное сравнение XML-документов. Может работать с большими файлами. Программа может выдавать дельта-файл с результатами сравнения. Этот файл можно отобразить непосредственно либо использовать XSL; можно обработать этот файл в других XMKL-программах. Программа DeltaXML Sync может сравнивать три XML-документа и визуализировать различия. Кроме функции сравнения XML-документов, имеет несколько инструментов форматирования:

  • Сравнение DeltaXML DITA.
  • Сравнение DeltaXML DocBook.
  • Сравнение DeltaXML ODT.
  • Слияние DeltaXML ODT.

Инструментальные средства для работы с XQuery

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

Редактор XMLSpy XQuery Editor предоставляет подсветку синтаксиса и контекстно-чувствительные меню для XQuery. Его функции автоматического завершения кода облегчают создание XQuery-документов. Он также позволяет разрабатывать XQuery для баз данных, поддерживающих XML. Другие функциональные возможности:

  • Изоляция ошибок.
  • Упрощенная отладка.
  • Улучшенная производительность кода.
  • Улучшенный просмотр текста.

Программа Stylus Studio XQuery Editor имеет интегрированный редактор XQuery с широким набором функциональных возможностей, включая интеллектуальную проверку кода, автоматическое завершение кода, конструкторы элементов, функции, path-выражения и многое другое. Редактор основан на открытой архитектуре XQuery с поддержкой процессора Saxon XQuery. Окно дерева исходного кода XQuery поддерживает технологию drag-and-drop, а также удобные символы и пиктограммы. Дополнительные функциональные возможности:

  • Создание сценариев XQuery.
  • Предварительный просмотр XQuery.
  • Отображение результатов XQuery в XQuery-выражения.

Средства разработки XQuery для Eclipse помогают создавать, отлаживать и выполнять XQuery в среде Eclipse. Эти средства предоставляют также:

  • Поддержку обновлений XQuery и расширений функций работы со сценариями.
  • Завершение кода и шаблоны кода.
  • Проверку семантики и быстрое исправление.
  • Проверку корректности при вводе.

Инструментальные средства для работы с XPath

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

Программа SketchPath – это XPath-редактор и средство анализа и тестирования XML. Она предоставляет IDE для разработки и тестирования XPath-выражений с XML-документами. Программа использует.NET Framework для работы с XPath 1.0 и Saxon.NET для XPath 2.0. Другие функциональные возможности:

  • Использование XPath-переменных в выражениях.
  • Помощник по функциям XPath.
  • Встроенный пошаговый трассировщик и отладчик.
  • Цветовая подсветка синтаксиса для выражений.

XPath Visualizer – это бесплатная программа Microsoft Windows, выполняющая XPath-запросы к XML-документам и визуализирующая результаты. Входной информацией может быть файл в файловой системе или URL-адрес; также можно скопировать содержимое файла непосредственно в программу в виде текста. В программе можно вводить полные XPath-запросы. Другие функциональные возможности:

  • Автоматическое обнаружение и отображение пространств имен XML.
  • Проверка корректности XPath-запросов.
  • Автоматическое добавление пространства имен XML по умолчанию в выражение запроса и возможность удалить пространство имен XML из любого документа.

Доступны также Web-программы для работы с XPath, например:

  • XPath Query Expression Tool (XMLME.com).
  • Simple online XPath tester .
  • XSLT Tryit Editor (W3Schools.com).

Заключение

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

Представляем вашему вниманию новый курс от команды The Codeby - "Тестирование Веб-Приложений на проникновение с нуля". Общая теория, подготовка рабочего окружения, пассивный фаззинг и фингерпринт, Активный фаззинг, Уязвимости, Пост-эксплуатация, Инструментальные средства, Social Engeneering и многое другое.


XML DOM 2

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

XML файл, который используется для примера.

Mazda 2007 BMW 2009

xml dom

В данный момент, наш файл содержит следующую структуру:

Взаимоотношение между узлами в XML DOM , основные моменты:

1. Любой узел в DOM дереве имеет родителя ParentNode . В нашем примере garage является родителем для обоих элементов car, а оба элемента car, являются в свою очередь родителями для элементов: model и year.

Как получить родителя для xml элемента car?

Console.WriteLine(elmRoot["car"].ParentNode.Name); //Результат: garage

2. У родителя могут быть дети ChildNodes. Например, для узла garage детьми являются оба элемента car. У элементов car, тоже есть дети model и year.

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

Например: как получить первый дочерний элемент?

ElmRoot.ChildNodes;

3. Как и в обычной жизни ребенок может родиться первым FirstChild, или последним LastChild.

Если взять для примера элемент car, то

FirstChild - это model LastChild - это year

4. В свою очередь между дочерними элементами тоже существуют связи, они могут быть братьями или сестрами, если проводить параллели с реальной жизнью.

У ребенка может быть к примеру брат Previous Sibling и следующий брат Next Sibling

Console.WriteLine(elmRoot.ChildNodes.FirstChild.NextSibling.Name); //Результат: year Console.WriteLine(elmRoot.ChildNodes. LastChild.PreviousSibling.Name); //Результат: model

Если элемент не найден, то тогда возникает исключение: NullReferenceException, поэтому при работе с xml всегда используйте блоки try catch.

Console.WriteLine(elmRoot.ChildNodes. LastChild.NextSibling.Name); Console.WriteLine(elmRoot.ChildNodes. FirstChild.PreviousSibling.Name);

LastChild является NextSibling;
FirstChild является PreviousSibling;

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

Как получить значение xml элемента?

Значение xml элемента можно получить при помощи свойства InnerText, например:

Console.WriteLine(elmRoot["car"].FirstChild.InnerText); //Результат: mazda

Ещё один способ, чтобы получить это же значение xml элемента:

Console.WriteLine(elmRoot.FirstChild.FirstChild.InnerText); //Результат: mazda

Последовательность перемещений по DOM дереву:

Garage -> car -> model -> Мазда

Получаем год:

ElmRoot["car"].LastChild.InnerText; //Результат: 2007

Последовательность:

Garage -> car -> year -> 2007

Ещё пример: 3 способа, для получения одного и того же результата.

Console.WriteLine(elmRoot.LastChild.FirstChild.InnerText); Console.WriteLine(elmRoot["car"].NextSibling.FirstChild.InnerText); Console.WriteLine(elmRoot.ChildNodes.Item(1).FirstChild.InnerText); //Результат: BMW

Если надо получить год для элемента со значением Mazda:

Console.WriteLine(elmRoot.FirstChild.LastChild.InnerText); //Результат: 2007

Для BMW (два способа, получить один и тот же результат)

Console.WriteLine(elmRoot.ChildNodes.Item(1). ChildNodes.Item(1).InnerText); Console.WriteLine(elmRoot.ChildNodes.ChildNodes.InnerText); //Результат: 2009

Как изменить значения xml элемента?

С помощью свойства InnerText() можно, как получить, так и изменить значение xml элемента, например изменим год.

//Устанавливаем новое значение elmRoot.FirstChild.LastChild.InnerText = "2010"; //Выводим новое значение на экран консоли Console.WriteLine(elmRoot.FirstChild.ChildNodes.Item(1).InnerText); //Результат: 2010

При этом нужно помнить, что все изменения происходят с виртуальным xml файлом, если Вы откроете физический файл, то увидите, что по-прежнему в нём указан год 2007.

Для того, чтобы изменения вступили в силу, нужно воспользоваться методом Save, например:

ElmRoot.Save("имя xml файла или поток");

Теперь информация будет изменена в «физическом» xml файле.

Как получить количество дочерних элементов?

Console.WriteLine(elmRoot.FirstChild.ChildNodes.Count);

garage -> car содержит 2 ребенка: model и year

Console.WriteLine(elmRoot.FirstChild.FirstChild.ChildNodes.Count);

garage -> car -> model содержит 1 дочерний xml элемент.

Обращение к дочерним элементам

по индексу

ElmRoot.ChildNodes.Name; elmRoot.ChildNodes.Name; //Результат: car

С помощью цикла

Foreach (XmlNode nod in elmRoot.ChildNodes) { Console.WriteLine(nod.Name); } //Результат: car, car

Как получить имя xml элемента?

elmRoot.Name; //Результат: garage

Создание нового XML элемента

Создадим новый элемент в нашем XML документе, чтобы он отличался от двух других (car) назовём его автобус (bus).

При создании нового элемента воспользуемся рекомендацией с сайта msdn и вместо стандартного new XmlElement воспользуемся методом CreateElement.

XmlElement elm = xmlDoc.CreateElement("bus");

Создание и добавление нового xml элемента

Создадим новый xml элемент по имени «BUS».

XmlElement elmRoot = xmlDoc.DocumentElement; Console.WriteLine(elmRoot.ChildNodes.Count); //car, car XmlElement elmNew = xmlDoc.CreateElement("bus"); elmRoot.AppendChild(elmNew); Console.WriteLine(elmRoot.ChildNodes.Count); //3 car, car, bus xmlDoc.Save("имя xml файла");

Пояснение:

1. Сначала получаем root-элемент к которому будем крепить новые элементы.

2. В качестве проверки выведем текущее количество дочерних элементов у элемента garage: 2 (car и car)

3. Создаем новый элемент BUS

4. При помощи метода AppendChild добавляем новый элемент в дерево

5. Снова воспользуемся проверкой и выведем текущее количество элементов у элемента garage, теперь их стало 3: car, car, bus.

6. Чтобы изменения затронули физический файл, сохраняемся

В самом XML файле новый элемент будет выглядеть так:

Как добавить новый xml элемент?

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

String strFilename = @"C:\lessons\Auto.xml"; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(strFilename); XmlElement elmRoot = xmlDoc.DocumentElement; XmlElement elmNew = xmlDoc.CreateElement("bus"); XmlText new_txt = xmlDoc.CreateTextNode("2006"); elmRoot.AppendChild(elmNew); elmRoot.LastChild.AppendChild(new_txt); Console.WriteLine(elmRoot.ChildNodes.Name); //bus Console.WriteLine(elmRoot.ChildNodes.LastChild.InnerText); //2006 Console.Read();

В XML файле:

2006

Для наглядности

А теперь создадим узел «bus», с такой же архитектурой, как и car, то есть добавим узлы: model, year и какое-нибудь текстовое содержимое.

Создание XML элемента с дочерними элементами

string strFilename = @"C:\lessons\Auto.xml"; //создаем новый xml документ в памяти XmlDocument xmlDoc = new XmlDocument(); //загружаем xml файл в память xmlDoc.Load(strFilename); //Получаем root-элемент XmlElement elmRoot = xmlDoc.DocumentElement; //Создаём 3 элемента: bus, model, year XmlElement elmBUS = xmlDoc.CreateElement("bus"); XmlElement elmModel = xmlDoc.CreateElement("model"); XmlElement elmYear = xmlDoc.CreateElement("year"); //Устанавливаем значения для элементов: model, year XmlText year_txt = xmlDoc.CreateTextNode("2006"); //XmlText mod_txt = xmlDoc.CreateTextNode("liaz"); добавим иначе //К элементу bus добавляем два дочерних элемента: model и year elmBUS.AppendChild(elmModel); elmBUS.AppendChild(elmYear); //Добавляем значения узлам model и year elmModel.InnerText = "liaz"; elmYear.AppendChild(year_txt); //Добавляем в дерево новый xml элемент bus elmRoot.AppendChild(elmBUS); //Проверяем, всё ли добавлено, как надо Console.WriteLine(elmRoot.ChildNodes.FirstChild.InnerText); Console.WriteLine(elmRoot.LastChild.LastChild.InnerText); //Если всё в порядке, то используем метод Save xmlDoc.Save("имя xml файла");

Результат:

liaz 2006

Как можно сократить, данный код? Например, следующим образом:

String PathXmlFile = @"C:\lessons\Auto.xml"; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(PathXmlFile); XmlElement elmRoot = xmlDoc.DocumentElement; XmlElement elmBUS = xmlDoc.CreateElement("bus"); XmlElement elmModel = xmlDoc.CreateElement("model"); XmlElement elmYear = xmlDoc.CreateElement("year"); //Добавляем значения узлам model и year elmModel.InnerText = "liaz"; elmYear.InnerText = "2006"; elmBUS.AppendChild(elmModel); elmBUS.AppendChild(elmYear); elmRoot.AppendChild(elmBUS); //Если всё верно, то вызываем метод Save xmlDoc.Save("имя xml файла");

Ещё немного сократим код, для этого воспользуемся свойством InnerXml:

XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(PathXmlFile); XmlElement elmXML = xmlDoc.CreateElement("bus"); string txt = "liaz" + "2006"; //InnerXml! elmXML.InnerXml = txt; //xmlDoc.DocumentElement (будет равен garage) - это ещё один способ обратиться к root-элементу, тоже самое что и XmlElement elmRoot = xmlDoc.DocumentElement; xmlDoc.DocumentElement.AppendChild(elmXML); xmlDoc.Save(PathXmlFile);

Результат

Получить список элементов при помощи GetElementByTagName

GetElementByTagName возвращает XmlNodeList , в котором содержаться все элементы потомки, принадлежащие указному элементу, например, нам нужно получить все модели машин, которые хранятся в гараже:

XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(strFilename); XmlNodeList modelName = xmlDoc.GetElementsByTagName("model"); foreach (XmlNode node in modelName) { Console.WriteLine(node.InnerText); } //Результат: mazda, bmw, liaz

Обращение при помощи индекса:

String PathXmlFile = @"C:\lessons\Auto.xml"; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(PathXmlFile); XmlNodeList modelName = xmlDoc.GetElementsByTagName("model"); Console.WriteLine(modelName.InnerText); //Результат: liaz

Как изменить текстовое содержимое, у только что созданного элемента «bus», при помощи метода GetElementByTagName?

String PathXmlFile = @"C:\lessons\Auto.xml"; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(PathXmlFile); XmlNodeList modelName = xmlDoc.GetElementsByTagName("model"); Console.WriteLine(modelName.InnerText); //Получили значение: liaz

Либо можно изменить имя liaz на Ikarus

Console.WriteLine(modelName.InnerText = "Ikarus");

Работа с XML в.NET

Информатика, кибернетика и программирование

Лекция 8. Работа с XML в.NET План 1. Классы для работы с XML .NET 2. Чтение и запись потоков данных Xml 2.1. Использование класса XmlReader 2.2. Методы чтения данных 2.3. Контроль типов данных при чтении Xmlдокумента 3. Создание XMLдокумента в Visual Studio 1. Классы для работы с XML .NET Мно

Украинкский

Лекция 8. Работа с XML в.NET

План

1. Классы для работы с XML . NET

2.1. Использование класса XmlReader

2.2. Методы чтения данных

Xml -документа

1. Классы для работы с XML . NET

Многие составляющие технологии.NET неразрывно связаны с XML. А значит, XML хорошо поддерживается со стороны Framework Class Library. В.NET поддерживаются следующие технологии:

  1. XML 1.0
  2. пространства имен XML
  3. XSD схемы
  4. выражения XPath
  5. XSL преобразования
  6. DOM Level 1 Core, DOM Level 2 Core

Среда. NET Framework не только позволяет применять XML в создаваемых приложениях, но и сама применяет его в конфигурационных файлах, документации по исходному коду и в манифесте сборки.

Пример 1. Манифест сборки

Классы для работы с XML собраны в пространстве имен System . Xml . Это пространство загружается вместе с классами, которые могут использоваться для обработки данных XML .

Таблица 1. Основные классы чтения и записи данных XML

XmlReader

Абстрактный класс, выполняющий чтение и обеспечивающий быструю доставку некешированных данных XML . Класс представляет собой однонаправленный синтаксический анализатор

XmlWriter

Абстрактный класс, выполняющий запись данных в виде потока или файла

XmlTextReader

Расширяет возможности класса XmlReader . Обеспечивает однонаправленный потоковый доступ к данным XML

XmlTextWtiter

Расширяет возможности класса Xml . Writer XML

Таблица 2. Некоторые классы обработки данных XML

XmlNode

Абстрактный класс, представляющий один узел в XML -документе. Базовый класс для некоторых других классов

XmlDocument

Расширяет класс XmlNode . Представляет собой реализацию DOM от W 3 C . Обеспечивает древовидное представление XML -документа в памяти с возможностями навигации и редактирования

XmlNavigator

Обеспечивает навигацию по документу

XMLDataDocument

служит мостом между хранилищами данных и реляционными данными, хранящимися в DataSet

2. Чтение и запись потоков данных Xml

Среда. NET Framework поддерживает два способа обработки XML -документов: потоковый ввод-вывод и DOM . Абстрактные классы XmlReader , XmlWriter и порожденные от них классы поддерживают потоковую модель ввода-вывода.

Классы, основанные на XmlReader обеспечивают быстрый однонаправленный курсор , который организует поток данных XML для обработки.

От XmlReader порождены следующие классы:

От XmlWriter порождены следующие классы:

XmlTextWriter

Расширяет возможности класса Xml . Writer . Обеспечивает быструю однонаправленную генерацию потоков XML

XmlQueryOutput

Расширяет возможности класса Xml . Writer , О беспечива ет функциональность, необходимую для вывода результатов преобразований XSLT.

Для работы с данными каждый из классов предоставляет необходимые методы.

2.1. Использование класса XmlReader

Пример чтения данных XML из файла. Данные хранятся в файле "book2.xml" и представляют собой описание книжного каталога:

Страны Мира

Книжний Клуб

Харьков

380

$4.00

Секреты работы в Windows

Дэвид Маккормик

Харьков

300

$5.20

Выбор и модернизация компьютера

Михаил Кутузов

Питер - Москва

320

$6.30

3d max

Кэлли Мердок

Киев - Москва

1050

$10.95

Система <span>Программирования </span> Delphi

Волков Андрей

Москва

800

$10.95

Как собрать свой компьютер

Джон Косли

Москва

300

$6.90

dfsdfdfsdf

sdfsdf

фіваваіва

234

$12.8

Создадим форму с двумя кнопками и текстовым редактором (richTextBox1), в который будем размещать прочитанные данные.

При нажатии кнопки ReadXml выполняется чтение и разбор XML -файла и вывод его в текстовый редактор. Обработчик кнопки ReadXML_Click :

private void ReadXML_Click(object sender, EventArgs e)

//чтение файла

RichTextBox1.Clear(); //очистка редактора

XmlReader rdr = XmlReader .Create("book2.xml" );//создание объекта rdr

while (rdr.Read())

if (rdr.NodeType == XmlNodeType .Text)

RichTextBox1.AppendText(rdr.Value + "\r\n" );

Класс XmlReader является абстрактным, т.есть, для таких классов нельзя создавать объекты оператором new . Для того, чтобы его можно было использовать, нужно включить в него статические методы.

В этом обработчике используется статический метод Create , который возвращает объект XmlReader . Дальше в цикле while выполняется чтение каждой строки файла. По мере чтения производится проверка свойства NodeType . Если узел является текстовым, в текстовый редактор добавляется его содержимое.

2.2. Методы чтения данных

Классы для работы с XML предоставляют несколько способов передвижения по XML -документу. Например, метод Read() перемещает на следующий узел. Потом можно проверить, имеет ли этот узел содержимое (HasValue ()) или атрибуты (YasAttributes ()).

Основные методы анализа документа представлены в таблице ниже.

Read()

читает очередную запись и перемещает на следующий узел

HasValue ()

возвращает true false – противном случае

HasAttributes ()

просматривает элемент на наличие атрибутов. Возвращает true , если элемент имеет содержимое, false – противном случае

ReadStartElement()

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

IsStartElement()

аналогичен методу ReadStartElement()

ReadString()

чтение одной строки из файла, содержащего документ

ReadElementString()

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

MoveToContent()

перемещение к содержимому узла

Пример 2. Вывод отдельных элементов XML -документа

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

Не забыть подключить using System.IO;

Добавим на форму кнопку Read from file . Код обработчика будет следующим:

private void btmReadXml2_Click(object sender, EventArgs e)

//чтение только название книг (элемент "TITLE"

RichTextBox1.Clear();

FileStream fs = new FileStream ("book2.xml" , FileMode .Open);

XmlReader rdr = XmlReader .Create(fs);

while (!rdr.EOF)

//Если попадаем на тип элемента, проверить его и загрузить в окно

RichTextBox1.AppendText(rdr.ReadElementString() + "\r\n" );

else

// в противном случае - переместиться на след.запись

Rdr.Read();

В этом примере в цикле while используется метод MoveToContent() для поиска узла типа XmlNodeType . Element с названием книги rdr.Name == "TITLE" )

if (rdr.MoveToContent() == XmlNodeType .Element && rdr.Name == "TITLE" )

Просмотр выполняется до конца файла (условие цикла

while (!rdr.EOF)

Если типом узла не является элемент или его имя не совпадает с "TITLE " , то вызывается метод Read () для перехода к следующему узлу. Если очередной узел "TITLE " найден, его содержимое добавляется в окно вывода. Таким образом, будут выведены только названия книг.

2.3. Контроль типов данных при чтении Xml -документа

Класс XmlReader также позволяет считывать данные со строгим контролем типов. Для этого используются методы ReadElementContentAs ... ReadElementContentAsDouble (), ReadElementContentAsBoolean () и другие. Далее показано как можно считывать значение в десятичном формате и выполнять вычисления. В примере выбирается значение цены книги, которое увеличивается на 25%.

Создадим еще одну кнопку с надписью New Price , а в ее обработчике напишем код:

private void btnNewPrice_Click(object sender, EventArgs e)

//Обработчик кнопки NewPrice - контроль типов

RichTextBox1.Clear();

XmlReader rdr = XmlReader .Create("book2.xml" );

while (rdr.Read())

if (rdr.NodeType == XmlNodeType .Element)

if (rdr.Name == "PRICE" )

decimal price = rdr.ReadElementContentAsDecimal();

RichTextBox1.AppendText("Curent Price = " + price+ "\r\n" );

Price += price * (decimal )0.25;

RichTextBox1.AppendText("New Price = " + price + "\r\n\r\n" );

else if (rdr.Name== "TITLE" )

RichTextBox1.AppendText(rdr.ReadElementContentAsString()+ "\r\n" );

rdr.Close();

Если это значение не может быть преобразовано к требуемому типу, возбуждается исключение FormatException .

Компилируем и запускаем на выполнение наш проект.

В результате получаем сообщение об ошибке. Причина – текст элемента имеет вид:

< PRICE >$10.95

Исправим все элементы < PRICE > 10.95,

а документ сохраним под именем ("book 3 .xml" );

В результате получим:

3. Создание XML -документа в Visual Studio

Для создания XML -файла в среде Visual Studio нужно в меню File выбрать New -> File . В окне создания выбрать Xml -файл

Откроется Xml -редактор, в котором можно вводить элементы Xml . Редактор автоматически проверяет ошибки и подставляет закрывающие теги. Созданный файл можно сохранить в нужном месте на диске командой SaveXmlFile . xml As ...


А также другие работы, которые могут Вас заинтересовать

25372. Экологические проблемы социальной работы 51 KB
Главная теоретическая и практическая задача экологии раскрыть общие закономерности организации жизни и на этой основе разработать принципы рационального использования природных ресурсов в условиях все возрастающего влияния человека на биосферу. Взаимодействие человеческого общества и природы стало одной из важнейших проблем современности поскольку положение которое складывается в отношениях человека с природой часто становится критическим: исчерпываются запасы пресной воды и полезных ископаемых нефти газа цветных металлов и др....
25373. Социальная политика в системе общественных отношений, ее взаимосвязь с социальной работой 37 KB
Социальная политика в системе общественных отношений ее взаимосвязь с социальной работой В условиях быстрых социальных перемен на макроуровне системы социальной работы для оптимизации ее деятельности требуется проведение эффективных социальных мероприятий и создание качественно новых программ разрешающих и предвосхищающих проблемы конкретного общества. Главная цель этих усилий состоит в содействии нормальному функционированию социальной сферы через реализацию социальной политики. Социальная политика представляет собой обязательный элемент...
25374. Основные модели и приоритеты социальной политики в России и за рубежом 19.81 KB
Основные модели и приоритеты социальной политики в России и за рубежом.Полит идеология неразрывно связана с полит сознанием это сфера общ сознания образуемая совок соц чувств представлений взглядов отражающих реальные полит отношен и вместе с тем составляющих их неотъемлемую часть. Неолиберализм отказались от прямой демократии признали неравенство людей но выдвинули идею соц равенства пересмотрели пункт о невмешательстве госва в экку. Социал демократич полит идеология в сер 19в защищала рабочие классы трудящихся от беззакония.
25375. Объект предмет и категории теории социальной работы 39.5 KB
Объект предмет и категории теории социальной работы Теория социальной работы это наука о закономерностях и принципах функционирования развития и регулирования конкретных социальных процессов и состояний личности в трудных жизненных ситуациях защите ее прав и свобод посредством целенаправленного воздействия на личность и окружающую ее социальную среду. Выбор объекта и предмета науки влияет на содержание теории и практики социальной работы. Объект и предмет основополагающие категории развития теории социальной работы. Так в...
25376. Социальная работа как вид профессиональной деятельности: объекты и субъекты 35 KB
чтобы понять сущность социальной работы как профессионального вида деятельности необходимо дать определение рядовому понятию деятельность. Деятельность это способ существования и развития социальной действительности проявление социальной активности целенаправленное отражение и преобразование окружающего мира. Основой социальной работы в России выступает благотворительность уходящая своими корнями в глубокую древность. Профессия социальный работник специалист по социальной работе официально зарегистрированы в мартеапреле...
25377. Основные тенденции истории социальной работы за рубежом 62.5 KB
Основные тенденции истории социальной работы за рубежом Периодизация истории социальной работы за рубежом повторяет основные периоды в истории развития народов: 1.Развитие социальной работы в новое время середина XVII начало XX в.Развитие социальной работы в новейшее время XXв. Кроме этой классификации не менее распространена следующая: пять периодов в истории социальной работы за рубежом: 1.
25378. Основные тенденции становления социальной работы в России 133 KB
Родоплеменные и общинные формы помощи и взаимопомощи у славян до Х в. Самыми распространенными формами помощи бедным односельчанам являлось кормление по домам призреваемые находились целые сутки в одном доме переходя на следующие в другой и подаяние милостыни но в деревнях денег было мало и подавали чаше всего едой и одеждой. Характеризуется отсутствием государственной систему социальной помощи населению. Самая распространенная форма помощи подача милостыни.
25379. Сущность и классификация технологий социальной работы 36 KB
Сущность и классификация технологий социальной работы При определении технологий в социальной работе необходимо учитывать общую трактовку социальных технологий особенности социальной работы как одного из видов человеческой деятельности а также особенности объектов субъектов содержания средств и других элементов социальной работы как системы. В отечественной литературе социальные технологии применительно к социальной работе трактуются как совокупность приемов методов и воздействий применяемых социальными службами отдельными учреждениями...
25380. Проблемы эффективности в социальной работе и методы ее оценки 52.5 KB
Проблемы эффективности в социальной работе и методы ее оценки. Другими важными проблемами ЭСР являются оценка эффективности выбор предметов оценки эффективности; субъекты оценивающие эффективность; методы и методики оценки эффективности; факторы влияющие на эффективность неэффективность. Наиболее типичными разделами методики являются: назначение; контур и предмет оценки эффективности; рекомендуемые методы оценки эффективности их характеристика; порядок определения эффективности; пример расчета эффективности; приложения при...

Язык - не сын, а отец мысли.
Оскар Уайльд

Аббревиатура XML расшифровывается как Extensible Markup Language, в переводе «расширяемый язык разметки». Как и язык HTML, он является подмножеством SGML (Standard General Markup Language) - «дедушки» языков разметки. Мы уже не раз сталкивались с форматом XML. Таков формат конфигурационных файлов, файла описания объектных источников данных.

XML - это универсальный, независящий от платформы стандарт описания информациии, который можно использовать для представления иерархических данных и унификации передаваемой информации. Без его знания невозможно понимание SOAP и следовательно, веб-сервисов. XML стал де-факто стандартом передачи данных в сети Интернет. Стандарт XML и связанных с ним форматов определяется консорциумом W3C(World Wide Web Consortium). Например, мы создаем aspx страницы в формате XHTML - переходном между HTML и XML, стандарт которого тоже определен W3C. Стандарт XHTML налагает более строгие правила на правильное формирование документа, аналогичные правилам XML.

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

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

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

является ошибкой в XML.

У тегов могут быть атрибуты. Значения атрибутов должны быть заключены в кавычки. Порядок атрибутов значения не имеет. Между открывающим и закрывающими тегами может находится текст. В XML сохраняются все пробелы, находящиеся в тексте. Если текста нет, можно применить сокращенную форму записи. Пример тега XML:

Это краткая форма тега

Вам это ничего не напоминает? Правила описания элементов ASP.NET точно такие же.

Существует атрибут xmlns, который определяет пространство имен. Значением его может быть любое уникальное имя. Существует договоренность использовать URL, так как они уникальны. Пространства имен имеют смысл, аналогичный их применению в.NET Framework - чтобы не смешивать одинаковые имена, используемые разными разработчиками. Название пространства имен отделяется от имени двоеточием.

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

Документы XML, удовлетворяющие всем требованиям синтаксиса, называют правильными (well-formed). Для описания данных XML использует DTD (Document Type Definition) - определение типа документа. Если файл соответствует DTD, он считается действительным (valid) .

Браузеры IE 6.0, FireFox 1.5 отображают XML-файлы с выделением синтаксиса. Родительские узлы можно раскрывать и закрывать. Например, в закрытом виде корневой узел файла BirthDay.xml выглядит так:

Среды разработки Visual Studio и VWD Express проверяют правильность xml-документов прямо во время редактирования.

AdRotator

Элемент управления AdRotator позволяет показывать рекламные баннеры и автоматически заменять их на другие. Сами баннеры описаны в файле XML или другом источнике данных. Реклама обновляется каждый раз при обновлении страницы. В свойстве AdvertismentFile задается имя XML-файла. Скелет XML-файла таков.

Внутри узла Advertisements располагаются узлы

У этих узлов имеются 5 атрибутов, все они необязательны.

Пример файла AdvertismentFile, он называется ads.xml.

fixed.gif http://www.im.am Бесплатный хостинг 40 хостинг logo2.jpg http://www.nv.am Газета "Новое время" 50 новости summer.jpg http://www.utro.ru Певицу Жасмин избил муж! 100 желтые новости

На страницу помещен элемент управления. Его свойство AdvertisementFile указывает на этот файл.

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

В предыдущих версиях ASP.NET можно было работать только с файлами XML. Теперь можно использовать любой источник данных, связавшись с элементом управления-источником данных. В таком случае необходимо указать как минимум 3 поля источника в свойствах ImageUrlField, NavigateUrlField и AlternateTextField.

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

Известно, что для форматирования HTML-файлов часто используются CSS (Cascading Stylesheets), хотя это необязательно, так как браузеры соотносят со всеми тегами определенный внешний вид. Элемент

Задает параграф, - полужирный шрифт - браузер знает, как их показывать.

Поскольку XML не использует изначально заданные теги, их значение может быть каким угодно:

может означать таблицу HTML, а может и деревянный стол. Поэтому браузеры показывают XML-документы «как есть». Можно задать CSS файлы и для XML-документов, но это не рекомендуется.

Для того, чтобы задать формат отображения XML-документов, используются таблицы стилей XSL . XSL - расширяемый язык стилей (Extensible Stylesheet Language) гораздо более богат возможностями, чем CSS. XSL - больше, чем просто таблица стилей.

Один и тот же файл XML можно связать с разными таблицами XSL, в том числе программно.

XSL состоит из 3 частей:

  1. XSLT - метода преобразования XML-документов
  2. XPath - метода задания частей и путей к элементам XML
  3. XSL Formatting Objects - метода форматирования XML-документов

Самая важная часть XSL - это язык преобразований XSLT (XSL Transformation). Он применяется для преобразования XSL-документов в другие типы документов или другие XSL -документы. Часто XSLT используется для преобразования XSL-документа в формат HTML.

Для того, чтобы создать XSLT-документ, выберите в диалоге создания файла XSLT file. VS 2005 создает каркас таблицы стилей. Так как таблица стилей сама по себе является XML-документом, она начинается с декларации XML.

Если вы изучали CSS, то знаете, что для задания стилей используются правила. Правило состоит из селектора и описания стиля в фигурных скобках.

В этот тег вложен шаблон HTML -файла. Комментарий напоминает о том, что туда нужно вставить XSL-элементы.

Создание файлов XSLT рассмотрим на примере. Создайте в папке App_Data файл XML "Quotes.xml"

Хотели как лучше, а получилось как всегда. Виктор Черномырдин Америка - континент, названный так потому, что его открыл Колумб. Жорж Элгози Я прихожу в бешенство от одной мысли о том, сколько бы я всего узнал, если бы не ходил в школу. Джордж Бернард Шоу Многое придумано для того, чтобы не думать. Карел Чапек Если скажешь правду, все равно рано или позно попадешься. Оскар Уайльд Быть ему президентом, если его до той поры не повесят. Марк Твен

Чтобы внести в выходной поток XSLT-преобразования каждый XML-элемент, применяется тег XSL xsl:for-each. Элемент:for-each определяет местоположение элементов в XML-документе и повторяет шаблон для каждого из них.

Данные можно отсортировать с помощью тега xsl:sort, который должен находиться внутри элемента xsl:for-each:

Окончательный вид файла трансформации:

Известные цитаты

Цитата Автор

Если хотите увидеть результат преобразования документа в браузере, включите после XML-декларации объявление

,

или выберите в меню XML пункт Show XML Output и определите файл преобразования.

Тот же самый XML-документ можно преобразовать с помощью другого XSL-файла:

Мастера Афоризма



В результате будет выводиться цитаты, разделенные горизонтальной линией.

Файлы определения схемы документа

Согласно современному стандарту, валидный документ должен соответствовать связанному с ним файлу XSD (XML Schema Definition) - файлу определения схемы XML, который определяет конкретный язык, то есть описывает, какие элементы и типы могут появляться в документе. Схемы XSD призваны заменить DTD (Document Type Definition), разница между ними заключается в том, что файлы XSD сами тоже используют синтаксис XML. Схемы XSD позволяют определить, какие теги разрешены, обязательны они или нет, могут ли повторяться в документе и так далее. Таким образом, XML описывает данные, а XSD - структуру этих данных, или метаданные. В терминах программирования, XSD - описание типов, в то время как в XML-файле описаны объекты этих типов. По адресу http://www.w3.org/TR/2003/WD-xmlschema-11-req-20030121/ находится рабочий проект стандарта XSD 1.1.

Файл описания схемы начинается с описания префикса пространства имен, который включается затем во все элементы этого файла. Адрес http://tempuri.org предназначается для задания URI для пространств имен ASP.NET .

Например, это определение задает, что элемент "Author" строкового типа, должен появляться один и только один и раз, и если он не указан, то принимает значение "Пушкин".

Параметр maxOccurs="unbounded" указывает, что элемент может встречаться любое количество раз.

Параметр ref позволяет ссылаться на уже описанный в данном файле глобальный элемент или атрибут, чтобы избежать повторного описания одних и тех же элементов.

  1. определить простые и сложные типы.

В XSD есть предопределенные типы - примерно такие же, как в.NET. Во время работы приложения они преобразуются в типы.NET. На их основании можно строить сложные типы, похожие на структуры языков программирования. Сложный тип состоит из последовательности описаний элементов. Определим сложный тип

Тег определяет, что элементы в данном типе должны появляться в заданном порядке. Если бы использовался тег , то элементы могли бы появляться в любом порядке.

Тег похож на структуру с вариантами. Он определяет, что в элементе данног типа должен быть только один из вложенных элементов.

В следующем примере определен простой тип, вложенный в определение элемента MyValue.

  1. Добавлять новые группы и группы атрибутов.

В определении сложного типа могут фигурировать атрибуты. Предположим, мы хотим построить схему такого файла:

Атрибуты могут быть только простых типов.

  1. Добавлять аннотации.

Аннотации позволяют вставлять описание существующих элементов, таким образом в файл добавляется документация.

Цитаты разных авторов

предназначается для читателей файла, а для обрабатывающих файл программ.

Редактировать XSD-файлы в Visual Studio 2005 можно и через исходный код, и с помощью дизайнера. Для XML-документа можно автоматически сгенерировать соответсвующую ему схему. В окне свойств XML-документа можно задать как файл схемы, так и файл преобразования. В таком случае студия автоматически проверяет файл на соответствие схеме, и даже IntelliSense подставляет теги из этого файла.

Класс XmlReader

С помощью класса XmlReader можно быстрее, чем другими методами, получить данные из XML-документов.

XmlReader - это абстрактный класс. Чтобы начать чтение, в статический метод Create передается объект класса XmlReaderSettings. Эта функция подсчитывает число узлов в документе.

using System.Xml; using System.IO; private int CountNodes(string xmlFile) { int NodesCount=0; XmlReaderSettings settings = new XmlReaderSettings(); settings.IgnoreWhitespace = true; settings.IgnoreComments = true; using (XmlReader reader = XmlReader.Create(xmlFile, settings)) { while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element) { NodesCount++; } } } return NodesCount; }

Класс XmlReader позволяет извлекать из документа классы CLR. Пусть у нас есть меню ресторана.

Напишем функцию, которая посчитает сумму цен и количества калорий в меню.

protected void Page_Load(object sender, EventArgs e) { int ItemsCount = 0; decimal DishesTotal = 0; UInt16 CaloriesTotal = 0; XmlReaderSettings settings = new XmlReaderSettings(); settings.IgnoreWhitespace = true; NameTable nt = new NameTable(); object food = nt.Add("food"); object price = nt.Add("price"); object calories = nt.Add("calories"); settings.NameTable = nt; string MenuFile = Path.Combine(Request.PhysicalApplicationPath, "menu.xml"); using (XmlReader reader = XmlReader.Create(MenuFile, settings)) { while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element && food.Equals(reader.LocalName)) { ItemsCount++; } if (reader.NodeType == XmlNodeType.Element && price.Equals(reader.LocalName)) { DishesTotal += (UInt16)reader.ReadElementContentAsDecimal(); } if (reader.NodeType == XmlNodeType.Element && calories.Equals(reader.LocalName)) { CaloriesTotal += (UInt16)reader.ReadElementContentAsInt(); } } } Response.Write(String.Format("Вы заказали {0} блюда на сумму {1:C}, {2} калорий", ItemsCount, DishesTotal, CaloriesTotal)); }

Класс XPathDocument

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

Возьмем XML-документ "Quotes.xml"и файл трансформации XSL "Quotes.xsl". В выходной поток страницы будет направлен результат преобразования XML-документа.

<% XPathDocument doc = new XPathDocument(Server.MapPath("App_Data\\Quotes.xml")); XslCompiledTransform xsl = new XslCompiledTransform(); xsl.Load(Server.MapPath("App_Data\\Quotes.xsl")); xsl.Transform(doc, null, Response.OutputStream); %>

Благодаря тому, что в файле трансформации определены табличные теги, на странице появится таблица с нужной информацией.

Элемент управления XML

Элемент управления XML предоставляет способ преобразовать XML-документ, используя таблицу стилей XSL. Свойство DocumentSource позволяют задать XML-файл, в котором находятся данные, TransformSource - файл трансформации XSLT.

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

XMLDataSource

Элемент -источник данных XMLDataSource обеспечивает простой способ подключения XML-документов как источников данных к элементам, отображающим информацию. Также можно задать запрос XPath для того, чтобы отфильтровать данные. Как и SqlDataSource, он позволяет редактировать, удалять, добавлять записи данных. Для этого нужно получить доступ к находящемуся в нем объекту XmlDataDocument с помощью вызова метода GetXmlDocument. После редактирования документ сохраняется с помощью метода Save.

В отличие от табличных данных в СУБД, данные в XML-файлах иерархичны, поэтому XMLDataSource удобно привязывать к иерархичным элементам управления, например Menu.

Синтаксис привязки к данным XML

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

Эти методы работают так же, как Bind и Eval, которые обсуждались в 7 лекции.

Применим этот синтаксис в элементе DataList, который получает данные из источника данных XmlDataSource:

Заключение

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