ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD...

55
ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6

Transcript of ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD...

Page 1: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

ASP.NETASP.NET

Rina Zviel-Girshin

Lecture 6

Page 2: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 2

Overview

• DataGrid• XML• XSD• XML and DataSet• System.Xml• XmlDataDocument• XmlReader/XmlWriter

Page 3: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 3

Display Controls

• In ASP.NET exists a set of controls called “display controls”.

• These controls are – asp:Repeater (not at our course – uses Templates), – asp:DataList,– and asp:DataGrid.

• The main purpose of these controls is displaying information from database tables and other external data stores to the screen.

Page 4: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 4

DataGrid

• The DataGrid control is the most complex and powerful of the controls used to display and maintain sets of data.

• It has near a 100 properties, methods and events (more during tirgul).

• The DataGrid displays a tabular data (data organized into rows and columns) from the data source or renders a table containing the SQL data.

Page 5: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 5

Example

Page 6: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 6

DataGrid.aspx<%@ Page Language="C#"%><%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.SqlClient" %>

<script runat="server"> protected void Page_Load(Object sender, EventArgs e) { SqlConnection con = new SqlConnection("Server=localhost;uid=sa;

database=pubs" ); SqlDataAdapter myCommand = new SqlDataAdapter("select * from

Authors", con); DataSet ds = new DataSet(); myCommand.Fill(ds, "Authors");

MyDataGrid.DataSource=ds.Tables["Authors"].DefaultView; MyDataGrid.DataBind();

} </script>

Page 7: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 7

DataGrid.aspx<html><head><title>DataGrid basic example</title></head> <body> <h3><font face="Verdana">Simple Select to a DataGrid Control</font></h3> <asp:DataGrid id="MyDataGrid" runat="server" Width="700" BackColor="#ccccff" BorderColor="black" ShowFooter="false" CellPadding=3 Font-Name="Verdana" Font-Size="8pt" HeaderStyle-BackColor="#aaaadd" EnableViewState="false" /> </body> </html>

Page 8: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 8

Data Source

• To specify the data source for the DataGrid you have to perform the following operations:

MyDataGrid.DataSource=ds.Tables["Authors"].DefaultView; MyDataGrid.DataBind();

• Or an alternative syntax is to specify both a DataSource and a DataMember from the DataSet to be used:

MyDataGrid.DataSource=ds; MyDataGrid.DataMember="Authors"; MyDataGrid.DataBind();

Page 9: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 9

Columns

• The DataGrid automatically displays data in a table format (grid layout) .

• A first row in the DataGrid is a row of column headings. It is generated from the column names in the data source.

MyDataGrid.DataSource=ds.Tables["Authors"].DefaultView;

//display all the columns

• The number of columns in DataGrid object equals to the number of columns in the data source.

Page 10: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 10

Columns display• A DataGrid permits selections of data columns for

display.• In order to select which columns to display, first

specify AutoGenerateColumns="False" for the grid.

• Then add a <Columns> section in the control. • In this section an <asp:BoundColumn> control is

added for each column to be displayed. • This bound column binds to a column of the data

source with the DataField="ColumnName" property setting.

Page 11: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 11

Example<asp:DataGrid id="ProductGrid" runat="server"

  AutoGenerateColumns="False"    >  <Columns>    <asp:BoundColumn      DataField=“au_fname"      HeaderText=“Author’s Family Name"      />    <asp:BoundColumn      DataField=“au_id"      HeaderText=“Author’s ID*"      ItemStyle-HorizontalAlign="Right"      FooterText="*The Id is written in XXX-XX-XXXX format"      FooterStyle-Font-Size="7pt"      />  </Columns></asp:DataGrid>

Page 12: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 12

Some DataGrid properties• You can use property="value" settings to define DataGrid’s

layout and styles.– Width="700“ – table’s width in pixel or %

– BackColor="#ccccff" – table cells background color

– BorderColor="black" – border color

– BorderWidth="1"– border’s width in pixel

– CellPadding=3 – amount of space (in pixels) between cell’s border and contents

– CellSpacing="0” - amount of space (in pixels) between columns. Default is 0.

– ShowFooter="false" – does not display table’s footer

– Font-Name="Verdana" Font-Size="8pt" - defines font family

– And more…

Page 13: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 13

EnableViewState

• EnableViewState property gets and sets a value indicating whether the server control persists its view state.

• The default value is true. • That means the DataGrid stores all of its data when

maintaining state and in each request all information is sent through a round trip with the form posts.

• To improve the performance of your pages turn this property off.

EnableViewState=“false”

Page 14: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 14

XML and the DataSet• DataSet can read/write XML for its data and/or schema

– You can create or modify data in a DataSet using XML file stream

– You can create or modify the DataSets schema using XML schema.

• XML-related DataSet methods for reading:– ReadXml: Reads an XML schema and data into the DataSet– ReadXmlSchema (xsd file): Reads an XML schema into the

DataSet.

• And for writing: – WriteXml, WriteXmlSchema– GetXml, GetXmlSchema

Page 15: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 15

Example<%@ Page Language="C#" %><%@ Import Namespace="System.Data" %><script runat=server>

void Page_Load(Object sender , EventArgs e) { DataSet ds = new DataSet(); ds.ReadXml(“C:\Menu.xml" ); dgrd.DataSource = ds; dgrd.DataBind();}</script><html><head><title>ReadXMLExample.aspx</title></head><body><asp:DataGrid ID="dgrd" cellpadding="10" runat="server" /></body></html>

Page 16: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 16

XML• XML stands for eXtensible Markup Language.• XML is a markup language much like HTML, but

its purpose is to describe data (not to display data like HTML).

• XML like HTML has tags, attributes and values. • The difference is that you can define your own new

tags. • You can use XML to create your own Markup

Language and later use it to markup (format) your documents.

Page 17: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 17

XML usage

• XML is a text-based language that stores data in a way that also describes the structure of the data.

• It provides a consistent format for data that can be passed easily – between applications – and across networks– and the Internet.

• XML is a common data format.• Many other applications use it for configuration

files.

Page 18: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 18

XML data format

• Visual Studio. NET uses XML as the format for storing data records, communicating, and sharing data.

• XML is the native data format for ADO.NET DataSets.– The underlying fields and records in the disconnected

dataset are stored as XML.

• XML is optimized for sharing data across the Internet.

• Office XP stores data as XML.

Page 19: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 19

Some facts

• Exists since 1998.• XML does not do anything.• Not owned by any one company.• An open standard.• Can represent almost any kind of data.• Supports sophisticated integrity constraints.• Simple XML documents are human-readable.• Easily converted to other formats.

Page 20: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 20

XML tags/elements

• XML is case-sensitive (there is a difference between upper and lowercase letters).

• <Author> and <author> are two different XML tags.

• You can define your own tags, called elements.

• Elements naming:– Names can contain letters, numbers, and other characters, can be in

any language (not advisable).

– Names must not start with a number or punctuation character.

– Names must not start with the letters xml (or XML or Xml or any other combination of xml).

– Names cannot contain spaces.

Page 21: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 21

XML File

• An XML file is an ASCII text file with XML markup tags.

• It has a .xml extension. • Example: myfile.xml • An XML file contains a declaration that announces

that this is an XML file. • Example: <?xml version="1.0"?> • An XML file contains a content marked up with

XML tags.

Page 22: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 22

Example

<?xml version="1.0"?><course_info>

<instructor><iname>Rina</iname>

<fname>Zviel-Girshin</fname></instructor><course>

<cname>Web_System Development</cname> <max_st_number>20</max_st_number> <hours>3 hours a week</hours> </course></course_info>

Page 23: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 23

Inner nodes

• XML inner nodes can have the same structure or can have a different structure.

• Example: <instructor> and <course>

• Inner nodes can have children.• Every node can have attributes.• Attribute values are quoted " or '.  • Example: <ingredient quantity="2“ units="cups">flour</ingredient>

Page 24: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 24

XSD

• The XML Schema language is also referred to as XML Schema Definition (XSD).

• The purpose of an XML Schema is to define the legal building blocks of an XML document or to validate XML file structure.

• XML Schemas are written in XML (no need to learn another new syntax and you can operate on your schemas with XML tools.).

• Defines a class of documents.• Individual documents (instances) can conform to a

given schema.

Page 25: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 25

An XML Schema• Defines elements that can appear in a document. • Defines attributes that can appear in a document. • Defines

– which elements are child elements– the order of child elements – the number of child elements

• Defines whether an element is empty or can include text.

• Defines data types for elements and attributes. • Defines default and fixed values for elements and

attributes.

Page 26: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 26

XSD file

• XML Schemas are extensible to future additions • XSD Schemas support data types. • XML Schemas support namespaces.• XML Schema file has a .xsd extension.• The file defines the elements of the legal XML

document.• The file starts with an <?xml version="1.0“?> prolog.• The <schema> element is the root element of every

XML Schema: <xs:schema and some attributes>.

Page 27: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 27

Example Student.xsd

<?xml version="1.0" encoding="UTF-8"?><xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name=“Student"> <xsd:complexType> <xsd:sequence> <xsd:element name="first_name" type="xsd:string"/> <xsd:element name="last_name" type="xsd:string"/> <xsd:element name="id" type="xsd:integer"/> </xsd:sequence> </xsd:complexType> </xsd:element></xsd:schema>

Page 28: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 28

Methods of Reading and Writing XML

// Code for creating the DataSet ds and loading the // DataSet from a data source not shown. DataSet ds;…String oFile = “C:\Rina\myXmlOutput.xsd”;String iFile = “C:\Rina\myXmlInput.xsd”; // Write the DataSet’s XMLSchema to an XML Documentds.WriteXmlSchema( oFile );

// Read/Upload XML Data into the DataSetds.ReadXml( iFile);

// Write the existing Data to an XML Documentds.WriteXml( "C:\Rina\myXMLData.xml", XmlWriteMode.DiffGram);

XmlWriteMode.DiffGram: writes the entire DataSet original and current values.

Page 29: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 29

XML document and data table

• XML files are hierarchical data structures they can be treated as database tables.

• For this purpose the xml file should be limited to a three-level hierarchy:– Table name

• Rows– columns

Page 30: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 30

Example

<?xml version=“1.0”?><customers><row><customer>levi</customer><city>tell-aviv</city><phone>039876543</phone><street>namir</street></row><row><customer>avivi</customer><city>eilat</city><phone>056999999</phone><street>shushanim</street></row>…</customers>

Customers tablecustomer city phone street

levi tell-aviv 039876543 namir

avivi eilat 056999999 shushanim

cohen haifa 048294444 prahim

The resulting XML document:

Page 31: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 31

XML with DataSets

• A DataSet can be used to represent XML data.• A DataSet can represent XML data in two ways:

– Load XML directly into a DataSet

– ds.ReadXml(somefile);

– Build an XmlDataDocument class from an existing DataSet

– ds.ReadXml(somefile);

– XmlDataDocument xdd= new XmlDataDocument (ds);

Page 32: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 32

Reading an XML file to a DataSet

<%@ Page Language="C#" %><%@ Import Namespace="System.Data" %><script runat=“server”>void Page_Load(Object sender , EventArgs e) { DataSet ds= new DataSet(); ds.ReadXml( MapPath( “Customers.xml" ) ); dgrd.DataSource = ds; dgrd.DataBind();}</script><html><head><title>ReadXmlFile.aspx</title></head><body><asp:DataGrid ID="dgrd" cellpadding="10" runat="server" /></body></html>

Page 33: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 33

Output<?xml version="1.0"?><customers> <row> <customer>Levi</customer> <city>Tell-Aviv</city> <phone>039876543</phone> <street>Namir</street> </row> <row> <customer> Avivi</customer> <city>Eilat</city> <phone>056999999</phone> <street>Shushanim</street> </row> <row> <customer> Cohen</customer> <city>Haifa</city> <phone>048294444</phone> <street>Prahim</street> </row></customers>

Page 34: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 34

ReadXml

DataSet ds= new DataSet();ds.ReadXml( MapPath( “Customers.xml" ) );

• A DataSet object is created. • ReadXml() method is used to read Customers.xml

file from the hard drive to this ds object.• MapPath() method or more correctly

Page.MapPath() method returns a physical path that a virtual path maps to.

• A ds object is bound to the DataGrid and displayed.

Page 35: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 35

Using a Schema

• In last example a DataSet object guesses the structure of XML document.

• Checked is the elements under the root can be presented as tables.

• If not checks if it is a single table.• All elements presented as strings.• A best practice is to include the schema to

match the xml file.

Page 36: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 36

Adding a Schema

• You specify a schema with an XML file in the following ways:– include the schema into the same file (schema

and data)– include schema’s name in prolog section of the

document– Read the schema separately using

ReadXmlSchema() method of a DataSet.

Page 37: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 37

Example

<%@ Page Language="C#" %><%@ Import Namespace="System.Data" %>

<script runat=“server”>void Page_Load(Object sender , EventArgs e) { DataSet ds= new DataSet(); ds.ReadXmlSchema( MapPath( " Customers.xsd" ) ); ds.ReadXml( MapPath( " Customers.xml" ) ); dgrd.DataSource = ds; dgrd.DataBind();}</script>

Page 38: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 38

Example

<html>

<head><title>ReadSchema.aspx</title></head>

<body>

<asp:DataGrid ID="dgrd" cellpadding="10"

runat="server" />

</body></html>

Page 39: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 39

Writing an XML from a DataSet

• To retrieve a string representation of Xml data GetXml() method of the DataSet can be used.

• String strxml=ds.GetXml();• This method retrieves both: the XML data

and the XML schema for the DataSet.• To retrieve only a schema you can use

GetXmlSchema() method.

Page 40: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 40

Example

<%@ Page Language="C#" %>

<%@ Import Namespace="System.Data" %>

<%@ Import Namespace="System.Data.SqlClient" %>

<script runat=server>

void Page_Load(Object sender , EventArgs e) {

DataSet ds = new DataSet();

SqlConnection con = new SqlConnection("Server=localhost;uid=sa; database=pubs" );

SqlDataAdapter da = new SqlDataAdapter( "Select * From authors", con);

da.Fill( ds, “DlastName" ); //name of DataMember

string strXml = ds.GetXml();

Response.Write( "<pre>" + Server.HtmlEncode( strXml) + "</pre>" );

}</script>

Page 41: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 41

Writing to an Xml file or a Stream

• An XML representation of the DataSet can be written to a stream using:– WriteXml() method of the DataSet– WriteXmlSchema() method of the DataSet.

• You can choose the output stream and the writing mode:– DiffGram – writes Xml data in such way that it can be

uploaded to Sql200Server using UpdateGram method– IgnoreSchema – writes an xml data without including

the schema– WriteSchema – (the default) writes both the xml data

and the schema

Page 42: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 42

Example<%@ Page Language="C#" %>

<%@ Import Namespace="System.Data" %>

<%@ Import Namespace="System.Data.SqlClient" %>

<script runat=“server”>

void Page_Load(Object sender , EventArgs e) {

string strXml;

DataSet ds = new DataSet();

SqlConnection con = new SqlConnection("Server=localhost;uid=sa; database=pubs" );

SqlDataAdapter da = new SqlDataAdapter( "Select * From authors ", con);

da.Fill( ds, “DlastName" ); //name of DataMember

ds.WriteXml( Response.OutputStream, XmlWriteMode.IgnoreSchema );

}</script> Writes an XML representation of the DataSet to the Response object OutputStream.

Page 43: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 43

System.Xml namespace

XmlReaderXmlReaderXmlReaderXmlReader

XmlWriterXmlWriterXmlWriterXmlWriter

XmlDocumentXmlDocumentXmlDocumentXmlDocument

XmlElementXmlElementXmlElementXmlElement

XmlAttributeXmlAttributeXmlAttributeXmlAttribute

System.XmlSystem.Xml

XmlNodeReaderXmlNodeReaderXmlNodeReaderXmlNodeReader

and moreand more

XmlTextReaderXmlTextReaderXmlTextReaderXmlTextReader

XmlTextWriterXmlTextWriterXmlTextWriterXmlTextWriter

XmlDataDocumentXmlDataDocumentXmlDataDocumentXmlDataDocument

In .NET exist a group of classes that can be used to process XML data

Page 44: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 44

XmlDataDocument

• The ADO.NET DataSet provides you with a relational representation of data (tables).

• Sometimes a tree representation of the DataSet can be useful.

• For hierarchical data access, you can use the XmlDataDocument class of .NET.

• The DataSet can be associated with an XmlDataDocument by adding a DataSet name in the constructor of an XmlDataDocument object.

• XmlDataDocument xdd = new XmlDataDocument( ds );

Page 45: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 45

Example<%@ Page Language="C#" %>

<%@ import Namespace="System.Data" %>

<%@ import Namespace="System.Xml" %>

<script runat="server">

void Page_Load(Object sender , EventArgs e) {

DataSet ds =new DataSet();

ds.ReadXml( MapPath( "Customers.xml" ) );

XmlDataDocument xdd = new XmlDataDocument( ds );

XmlNodeList nl = xdd.GetElementsByTagName("customer");

for( int i=0; i< nl.Count; i++)

{ lblOutput.Text += nl[i].InnerXml; }

}

</script>

Page 46: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 46

Example

<html><head> <title>XmlDataDocument.aspx</title>

</head>

<body> <h2>All Customers </h2>

<asp:Label id="lblOutput" Runat="Server"></asp:Label>

</body></html>

Page 47: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 47.NET Data Provider.NET Data Provider

A DataSet associated with an XmlDataDocument

SyncSync

XmlReaderXmlReader

XmlText-XmlText-ReaderReader

XmlNode-XmlNode-ReaderReader

XmlData-XmlData-DocumentDocument

DataSetDataSet

DataReaderDataReader

SqlData-SqlData-ReaderReader

OleDbData-OleDbData-ReaderReader

DataAdapterDataAdapter

SqlData-SqlData-AdapterAdapter

OleDbData-OleDbData-AdapterAdapter

Page 48: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 48

XmlTextReader

• An XmlTextReader class provides a fast forward only access to the raw data contained in XML document.

• Example:

XmlTextReader xmltr;

xmltr = new XmlTextReader("MyFile.xml");

while(xmltr.Read())

{ …processing… }

Page 49: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 49

XmlTextWriter

• An XmlTextWriter class provides a fast forward only method to write data to an Xml file.

• The resulting XML file conforms to the W3C XML version 1.0 and the Namespaces in XML specifications.

• To create an XmlTextWriter object a constructor with file straem name or object and encoding type should be used.

• Example:• XmlTextWriter xmltw = new XmlTextWriter (“stam.xml",

Encoding.Unicode);

Page 50: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 50

XmlTextWriter methods• The most important methods are: • WriteStartDocument() - is called to start creating

an XML document. This will create the first line in the XML document (a prolog).

• WriteStartElement(string) - this method creates a new element in the XML document with the name specified by the string input parameter. (You can also specify a namespace as a second, optional string parameter.)

• WriteEndElement() - this method closes off the element created in the WriteStartElement(string) method call.

Page 51: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 51

More methods• WriteElementString(name, text_value) – is used to

create an XML element with nothing but text content (i.e., no nested elements).

• WriteAttributeString(name, value) – writes/adds an attribute name and value to the current element.

• WriteEndDocument() - this method completes the writing of the XML document.

• Close() - closes the underlying stream, writing the contents of the XML document to the specified file location.

Page 52: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 52

A partial Example

<%@ Import Namespace="System.Xml" %>

<%@ Import Namespace="System.Text" %>

<script language="C#" runat="server">

void Page_Load(object sender, EventArgs e)

{

XmlTextWriter writer = new XmlTextWriter(MapPath("userInfo.xml"), Encoding.UTF8);

writer.WriteStartDocument();

writer.WriteStartElement("bookstore");

writer.WriteStartElement("book", null);

writer.WriteAttributeString("genre","autobiography");

writer.WriteAttributeString("publicationdate","1979");

writer.WriteAttributeString("ISBN","0-7356-0562-9");

writer.WriteElementString("title", null, "The Autobiography of Mark Twain");

Page 53: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 53

A partial Example writer.WriteStartElement("Author", null);

writer.WriteElementString("first-name", "Mark");

writer.WriteElementString("last-name", "Twain");

writer.WriteEndElement();

writer.WriteElementString("price", "7.99");

writer.WriteEndElement();

writer.WriteEndElement();

writer.WriteEndDocument();

writer.Close();

}

Page 54: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 54

An asp:XML control

• XML files can be imported to a Web page directly without converting them from their hierarchical structures into DataSet tables.

• Xml file can be combined with special stylesheets and displayed through an <asp:Xml> control in the general format shown below.

• Example:<asp:Xml id=“name" runat="server"

  DocumentSource="path.xml"  TransformSource="path.xsl“ />

Page 55: ASP.NET ASP.NET Rina Zviel-Girshin Lecture 6. Rina Zviel-Girshin @Paralex2 Overview DataGrid XML XSD XML and DataSet System.Xml XmlDataDocument XmlReader/XmlWriter.

Rina Zviel-Girshin @Paralex 55

Any Questions?