» ASP
для новичков
» Главная
страница
»
ASP
для новичков
Извлечение данных из
XML-файлов
О самом языке XML будет достаточно
подробно рассказано в следующей главе. Однако в процессе изложения материала мы
уже сталкивались с файлами XML, поэтому сможем использовать их в достаточно
простом примере.
Итак, как нам уже известно, файлы
XML являются простыми текстовыми файлами, имеющими такую же структуру, как и
HTML-файлы, но при этом набор используемых тегов определяет сам разработчик.
Естественно, подобная структура позволяет хранить в XML-файлах не только
структурированные тексты, но и информацию из баз данных. Естественно, XML
никогда не сможет заменить стандартные механизмы систем управления базами
данных, однако при использовании определенных выборок данных для Web эти файлы
могут быть полезны. Достаточно всего лишь настроить параметры отображения
XML-файлов в браузере пользователя, и можно передавать ему весь файл как есть,
без дополнительной обработки.
Впрочем, иногда дополнительная
обработка может понадобиться, но стоит вспомнить, что технология Microsoft .NET
очень плотно связана с XML, поэтому в ней присутствуют средства достаточно
прозрачной работы с XML-файлами. В рамках этого раздела мы, естественно, не
сможем рассмотреть всю технологию использования XML в проектах ASP.NET, для
этого пришлось бы писать отдельную книгу, но мы рассмотрим механизм
использования XML-файла в качестве источника данных для таблицы, отображаемой на
Web-странице.
Для начала нам придется создать
простейший XML-файл, содержащий какую-либо информацию. Код этого файла приведен
в листинге 4.8.
Листинг 4.8
<Document> <Row>
<Coluiml>K/Columnl>
<Column2>2</Column2>
<Column3>3</Column3>
<Column4>4</Column4>
</Row>
<Row>
<Columnl>5</Coluitml>
<Coluim2>6</Column2>
<Column3>7</Column3>
<Column4>8</Column4>
</Row>
</Document>
Как видно, структура и содержимое
XML-файла максимально прозрачны. Для простоты доступа этот файл стоит разместить
в том же каталоге, в котором будет функционировать создаваемое Web-приложение.
Впрочем, это не критично.
Теперь перейдем к созданию самого
Web-приложения. На разрабатываемой Web-странице достаточно будет разместить один
компонент DataGrid. HTML-код этой Web-страницы в режиме разработки приведен в
листинге 4.9.
Листинг 4.9
<%@ Page Language="vb"
AutoEventWireup="false" Codebehind="WebForml.spx.vb"
jnherits="dataxml.WebForml"%>
felDOCTYPE HTML PUBLIC "-//W3C//DTD
HTML 4.0 Transitional//EN">
<
HTML>
<HEAD>
<title>
</title>
<meta name="GENERATOR"
content="Microsoft Visual Studio.NET 7.0">
<meta name="CODE__LANGUAGE"
content="Visual Basic 7.0">
<meta
name="vs_defaultClientScript" content="JavaScript">
<meta
name="vs_targetSchema"
Rcontent="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body
MS_POSITIONING="GridLayout">
<form id="Forml" method="post"
runat="server">
<asp:DataGrid id="DataGridl"
style="Z-INDEX: 101; LEFT: ЗОрх;
POSITION: absolute;
TOP: 13px" runat="server"
Width="282px"
Height="162px"x/asp:DataGrid>
</form>
</body>
</HTML>
Естественно, это не самый сложный
листинг, который приходилось нам I рассматривать в этой книге.
Но вот код класса, который будет считывать данные из XML-файла и помещать их в
таблицу, будет несколько сложнее. Этот код приведен в листинге 4.10.
Л истинг
4.10
Public Class WebForml "i
Inherits System.Web.HI. Page
Protected WithEvents DataGridl
As
System.Web.UI.WebControls.DataGrid
#Region " Web Form Designer
Generated Code "
'This call is required by the Web
Form Designer.
<System.Diagnostics.DebuggerStepThrough()>
Private Sub InitializeComponent()
End Sub
Private Sub Page_Init(ByVal sender
As System.Object, ByVal
e As System.EventArgs) Handles
MyBase.Init
'CODEGEN: This method call is
required by the Web Form Designer
'Do not modify it using the code
editor. InitializeComponent()
End Sub
#End Region
Private Sub Page_Load(ByVal sender
As System.Object, ByVal
e As System.EventArgs) Handles
MyBase.Load
'Put user code to initialize the
page here
Dim DS As New DataSet()
Dim FS As 10.FileStream
Dim Reader As lO.StreamReader
FS = New
IO.FileStream(Server.MapPath("datal.xml"), IO.FileMode.Open, 10.FileAccess.Read)
Reader = New lO.StreamReader(FS)
DS.ReadXml(Reader) FS.Close ()
Dim Source As DataView Source = New
DataView(DS.Tables(0))
DataGridl.DataSource = Source
DataGridl.DataBind()
End Sub
End Class
Как видно, все операции будут
выполняться в обработчике загрузки таблицы. Нам потребуется один экземпляр
класса DataSet, переменная fs, которая позволяет работать с файлами, и
переменная Reader, предназначенная для чтения потоков информации из файла.
Файл datal.xml открывается в
конструкторе объекта FileStream, причем, как легко заметить, открывается только
на чтение. Затем при помощи метода Readxmi мы считываем данные из потока,
связанного с XML-файлом. Этого достаточно. Теперь все данные уже находятся в
экземпляре объекта DataSet. Затем, мы объявляем переменную типа DataView,
которая обраща- ется к
начальному элементу коллекции Tables из созданного набора данных. Как мы уже
знаем, в объектах DataSet может храниться несколько таблиц сразу, но в данном
случае, там точно всего одна таблица, поэтому можно смело применить начальный и
единственный элемент коллекции Tables. A затем эту извлеченную таблицу мы
используем в качестве источника данных для компонента DataGridi и отдаем команду
на отображение полученных данных при помощи метода DataBind. В результате этих
действий браузере отображается Web-страница, внешний вид которой показан на рис.
4.2.
Следует обратить внимание на то, с
какой легкостью мы подключили XML-файл к таблице без какого-либо описания
данных. Вся прелесть механизма JASP.NET в том, что он автоматически распознает
структуру корректных XML-файлов и может отлично их обрабатывать.
Процесс обучения asp
закончен.
Надеемся, что вы добьетесь успехов в веб
дизайне.
Изучить еще что
нибудь? |