Книга: ASP.NET MVC Framework
XML-данные
XML-данные
.NET Framework предлагает широкий ассортимент объектов для доступа к XML-данным, которые расположены в стандартных сборках: System.Xml, System.Xml.XPath, System.Xml.Xsl, System.Xml.Schema и System.Xml.Linq. Рассмотрим назначение и наиболее полезные классы каждой из сборок:
? System.Xml — содержит базовые классы для работы с XML, такие как
XmlDocument, XmlElement, XmlNode и множество других, которые позволяют реализовать загрузку из файлов, обработку, добавление, изменение, удаление XML-данных;
? System.Xml.XPath — содержит классы для реализации работы механизма XPath, позволяющего писать выражения к XML-документу для поиска необходимых данных;
? System.Xml.Xsl — содержит классы для поддержки реализации XSLT-преобразований XML-документа;
? System.Xml.Schema — содержит классы для поддержки XSD-схем и валидации XML-данных на их основе. Содержит большое число классов, позволяющих создавать XSD-схемы и использовать их;
? System.Xml.Lin — последняя сборка, которая недавно появилась в .NET Framework. Содержит классы, реализующие механизм доступа к XML-данным на основе LINQ-выражений. Этот механизм носит собственное название LINQ для XML. Он позволяет использовать уже известные вам LINQ-выражения для обработки XML-данных.
Рассмотрим пример обработки XML-данных с помощью LINQ для XML. Предположим, что у нас есть следующий XML-файл:
<?xml version="1.0"?>
<Orders>
<Order OrderId="99" OrderDateTime="01.02.2009">
<Address>
<Name>Владимир Иванов</Name>
<Street>yn. CTpoMTanefr</Street>
<House>12</House>
<Apartment>23</Apartment>
<City>MocKBa</City>
<Zip>100888</Zip>
<Country>Россия</Country>
</Address>
</Order>
<Order OrderId="100" OrderDateTime="01.02.2009">
<Address>
<Name>Сергей Петров</Name>
<Street>ул. Бажова</Street>
<House>76</House>
<Apartment>123</Apartment>
<City>Eкатеринбург</City>
<Zip>620000</Zip>
<Country>Россия</Country>
</Address>
</Order>
</Orders>
Для получения имени по номеру ордера, используя LINQ для XML, мы можем написать следующий код:
XDocument xdoc =
XDocument.Load("D:CPS#ProjectsMVCBookMVCBookOrder.xml");
IEnumerable<XElement> orders =
xdoc.Element("Orders").Descendants("Order");
int orderId = 100;
IEnumerable<XElement> order =
orders.Where(x => x.Attribute("OrderId").Value == orderId.ToString());
XElement address = order.Select(x => x.Element("Address"))
.FirstOrDefault();
string name = address.Element("Name").Value;
В данном примере загружается файл orders.xml, в переменной orders присваиваются все заявки (элементы Order в XML-файле). Затем с помощью LINQ-запроса находится заявка с идентификатором 100. После этого выбирает элемент адреса заявки и, в завершение, из адреса извлекается имя.
Стоит отметить, что в данном примере не производились проверки возвращаемых значений на null, что на практике делать обязательно.
- Преобразование XML в реляционную базу данных
- XmlTextReader
- Взаимодействие PHP и XML
- Основные принципы XML
- Создание объекта для обмена данными между XML-файлом и формой
- Копирование данных из XML-файла в таблицу БД
- Другие возможности XML
- Символьные данные в XML-документах
- ГЛАВА 10 ADO.NET и XML
- Преобразование документа XML в данные ADO.NET
- Данные ADO.NET в документе XML
- Специфика .NET Compact Framework: ADO.NET