https://technet.microsoft.com/en-us/library/ms143221(v=sql.105).aspx |
Работа с XML
Класс 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:
<asp:Xml ID="Xml1" runat="server" DocumentSource="~/App_Code/Quotes.xml" TransformSource="~/App_Data /Quotes.xsl"></asp:Xml>
XMLDataSource
Элемент-источник данных XMLDataSource обеспечивает простой способ подключения XML-документов как источников данных к элементам, отображающим информацию. Также можно задать запрос XPath для того, чтобы отфильтровать данные. Как и SqlDataSource, он позволяет редактировать, удалять, добавлять записи данных. Для этого нужно получить доступ к находящемуся в нем объекту XmlDataDocument с помощью вызова метода GetXmlDocument. После редактирования документ сохраняется с помощью метода Save.
В отличие от табличных данных в СУБД, данные в XML-файлах иерархичны, поэтому XMLDataSource удобно привязывать к иерархичным элементам управления, например, Menu.
Синтаксис привязки к данным XML
Так как в приложениях XML-данные используются все чаще и чаще, был введен метод привязки данных, полученных из XMLDataSource.
Эти методы работают так же, как Bind и Eval, которые обсуждались в "лекции 7" :
<% XPathBinder.Eval(Container.DataItem, "name"); %>
Как и при связывании с помощью SQLDataSource, можно сокращенно писать
<%# XPath("name")%>
Так же как и у DataBinder, метод Eval класса XPathBinder поддерживает строки форматирования:
<% XPath("employees/employee/HireDate", "{0:mm dd yyyy}") %>
Применим этот синтаксис в элементе DataList, который получает данные из источника данных XmlDataSource:
<asp:XmlDataSource ID="XmlDataSource1" runat="server" DataFile="~/nobel.xml" XPath="//nobel/literature/writer"> </asp:XmlDataSource> <asp:DataList ID="DataList1" DataSourceID="XmlDataSource1" runat="server"> <ItemTemplate> <p> <%# XPath("name")%> получил премию по литературе в <%# XPath("winningdate")%> за произведение <%# XPath("work")%></b> </p> </ItemTemplate> </asp:DataList>
Заключение
В этой лекции мы рассмотрели работу с данными типа XML. XML предоставляет универсальный способ для описания и обмена структурированной информацией, независимо от приложений и разработчиков. На этом мы завершили рассмотрение работы с источниками данных.