Чем работать с XML - обзор онлайн-сервисов и xml редакторов.
Последнее обновление: 31.10.2015
Для работы с XML в C# можно использовать несколько подходов. В первых версиях фреймворка основной функционал работы с XML предоставляло пространство имен System.Xml . В нем определен ряд классов, которые позволяют манипулировать xml-документом:
XmlNode : представляет узел xml. В качестве узла может использоваться весь документ, так и отдельный элемент
XmlDocument : представляет весь xml-документ
XmlElement : представляет отдельный элемент. Наследуется от класса XmlNode
XmlAttribute : представляет атрибут элемента
XmlText : представляет значение элемента в виде текста, то есть тот текст, который находится в элементе между его открывающим и закрывающим тегами
XmlComment : представляет комментарий в xml
XmlNodeList : используется для работы со списком узлов
Ключевым классом, который позволяет манипулировать содержимым xml, является XmlNode , поэтому рассмотрим некоторые его основные методы и свойства:
Свойство Attributes возвращает объект XmlAttributeCollection , который представляет коллекцию атрибутов
Свойство ChildNodes возвращает коллекцию дочерних узлов для данного узла
Свойство HasChildNodes возвращает true , если текущий узел имеет дочерние узлы
Свойство FirstChild возвращает первый дочерний узел
Свойство LastChild возвращает последний дочерний узел
Свойство InnerText возвращает текстовое значение узла
Свойство InnerXml возвращает всю внутреннюю разметку xml узла
Свойство Name
возвращает название узла. Например,
Свойство ParentNode возвращает родительский узел у текущего узла
Применим эти классы и их функционал. И вначале для работы с xml создадим новый файл. Назовем его users.xml и определим в нем следующее содержание:
Теперь пройдемся по этому документу и выведем его данные на консоль:
Using System.Xml; class Program { static void Main(string args) { XmlDocument xDoc = new XmlDocument(); xDoc.Load("users.xml"); // получим корневой элемент XmlElement xRoot = xDoc.DocumentElement; // обход всех узлов в корневом элементе foreach(XmlNode xnode in xRoot) { // получаем атрибут name if(xnode.Attributes.Count>0) { XmlNode attr = xnode.Attributes.GetNamedItem("name"); if (attr!=null) Console.WriteLine(attr.Value); } // обходим все дочерние узлы элемента user foreach(XmlNode childnode in xnode.ChildNodes) { // если узел - company if(childnode.Name=="company") { Console.WriteLine("Компания: {0}", childnode.InnerText); } // если узел age if (childnode.Name == "age") { Console.WriteLine("Возраст: {0}", childnode.InnerText); } } Console.WriteLine(); } Console.Read(); } }
В итоге я получу следующий вывод на консоли:
Чтобы начать работу с документом xml, нам надо создать объект XmlDocument и затем загрузить в него xml-файл: xDoc.Load("users.xml");
При разборе xml для начала мы получаем корневой элемент документа с помощью свойства xDoc.DocumentElement . Далее уже происходит собственно разбор узлов документа.
В цикле foreach(XmlNode xnode in xRoot) пробегаемся по всем дочерним узлам корневого элемента. Так как дочерние узлы представляют элементы
Чтобы определить, что за узел перед нами, мы можем сравнить его название: if(childnode.Name=="company")
Подобным образом мы можем создать объекты User по данным из xml:
List
Представляем вашему вниманию новый курс от команды The Codeby - "Тестирование Веб-Приложений на проникновение с нуля". Общая теория, подготовка рабочего окружения, пассивный фаззинг и фингерпринт, Активный фаззинг, Уязвимости, Пост-эксплуатация, Инструментальные средства, Social Engeneering и многое другое.
XML DOM 2
В предыдущей статье были описаны общие понятия касающиеся XML. В этой статье научимся выполнять основные действия, связанные с изменением, добавлением, поиском в XML файле.
XML файл, который используется для примера.
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 файле:
Для наглядности
А теперь создадим узел «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 файла");Результат:
Как можно сократить, данный код? Например, следующим образом:
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 = "
Результат
Получить список элементов при помощи 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-файлов, а также средства поддержки 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.
- Проверка корректности 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-документами. Ссылки на все перечисленные инструментальные средства приведены в разделе .
- Временная отметка.
- Содержимое.
- Двоичное сравнение.
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-файлов) можно выбрать специализированную программу сравнения.
Язык - не сын, а отец мысли.
Оскар Уайльд
Аббревиатура 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.
|
На страницу помещен элемент управления. Его свойство AdvertisementFile указывает на этот файл.
|
Если установлено свойство Keyword, то элемент управления показывает только ту рекламу, которая соответствует его содержанию. Так как его можно менять динамически, можно подстраивать рекламу под нужды пользователя. Keyword должен встречаться хотя бы раз в файле объявлений, иначе вместо рекламы будет пустой прямоугольник.
В предыдущих версиях ASP.NET можно было работать только с файлами XML. Теперь можно использовать любой источник данных, связавшись с элементом управления-источником данных. В таком случае необходимо указать как минимум 3 поля источника в свойствах ImageUrlField, NavigateUrlField и AlternateTextField.
|
Файлы преобразования документа
Известно, что для форматирования HTML-файлов часто используются CSS (Cascading Stylesheets), хотя это необязательно, так как браузеры соотносят со всеми тегами определенный внешний вид. Элемент
Задает параграф, - полужирный шрифт - браузер знает, как их показывать.
Поскольку XML не использует изначально заданные теги, их значение может быть каким угодно: