ASP.Net/XML/XmlDataSource
Содержание
- 1 asp:Xml datasource
- 2 Binding XML Data from an XmlDataSource Control
- 3 Binding XML Data from Other Sources
- 4 Caching XML Data in an XmlDataSource Control
- 5 Create asp XmlDataSource
- 6 Enter an XML filename or raw XML starting with
- 7 Fill XmlDataSource with your code
- 8 Handling XmlDataSource Events
- 9 Programmatically Creating an XmlDataSource Control
- 10 Updating Data through XmlDataSource Control
- 11 Use ItemTemplate and XPath to display data from XmlDataSource
- 12 Using Inline XML Data in an XmlDataSource Control
- 13 Using the XmlDataSource control to consume an RSS feed
- 14 XmlDataSource and XML document
asp:Xml datasource
<!-- File: XmlAdPanel.aspx -->
<%@ Page language="c#" %>
<HTML>
<body>
<form runat="server">
<asp:Xml id=_xml1 runat="server"
DocumentSource="sample.xml"
TransformSource="sampleTransform.xsl">
</asp:Xml><br/>
<asp:Panel id=_p1 runat=server HorizontalAlign="center"
Visible="true" bgColor="cornsilk">
<asp:Label id=_l1 runat=server>Panel label</asp:Label>
<br/>
<asp:TextBox id=_tb1 runat=server/>
<br/>
<asp:Button Text="Push me!" runat=server/>
</asp:Panel>
</FORM>
</body>
</HTML>
<%--
<items>
<item>item 1</item>
<item>item 2</item>
<item>item 3</item>
<item>item 4</item>
</items>
--%>
<%--
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="html" indent="yes"/>
<xsl:template match="item">
<li>
<xsl:apply-templates />
</li>
</xsl:template>
<xsl:template match="items">
<ul>
<xsl:apply-templates />
</ul>
</xsl:template>
<!-- Root template match -->
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
</xsl:transform>
--%>
Binding XML Data from an XmlDataSource Control
<%@ Page Language="C#" %>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Binding XML Data from an XmlDataSource Control</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TreeView ID="bookView" Runat="server" DataSourceID="bookSource">
<DataBindings>
<asp:TreeNodeBinding ImageUrl="~/Images/openbook.gif" TextField="Title" DataMember="book"></asp:TreeNodeBinding>
<asp:TreeNodeBinding ImageUrl="~/Images/notepad.gif" TextField="name" DataMember="chapter"></asp:TreeNodeBinding>
</DataBindings>
</asp:TreeView>
<asp:XmlDataSource ID="bookSource" Runat="server" DataFile="~/Data.xml"
XPath="Data/genre[@name="Fiction"]/book">
</asp:XmlDataSource>
</div>
</form>
XPath="Data/genre[@name="Fiction"]/book"</body>
</html>
File: ~/Data.xml
<Data>
<genre name="Fiction">
<book ISBN="1" Title="title 1" Price="19.99" Discount="1.999">
<chapter num="1" name="Introduction">
Abstract...
</chapter>
<chapter num="2" name="Body">
Abstract...
</chapter>
<chapter num="3" name="Conclusion">
Abstract...
</chapter>
</book>
</genre>
<genre name="NonFiction">
<book ISBN="2" Title="title 2" Price="27.95" Discount="2.795">
<chapter num="1" name="Introduction">
Abstract...
</chapter>
<chapter num="2" name="Body">
Abstract...
</chapter>
<chapter num="3" name="Conclusion">
Abstract...
</chapter>
</book>
</genre>
</Data>
Binding XML Data from Other Sources
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<%@ Import Namespace="System.Xml" %>
<%@ Import Namespace="System.Web.Configuration" %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
string connectionString = WebConfigurationManager.ConnectionStrings["AdventureWorks"].ConnectionString;
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
string sql = "Select ProductID, Name from Production.Product AS Product " +
"Order by ProductID FOR XML AUTO, ROOT("Products")";
SqlCommand command = new SqlCommand(sql, connection);
XmlReader reader = command.ExecuteXmlReader();
XmlDocument doc = new XmlDocument();
doc.Load(reader);
productsSource.Data = doc.OuterXml;
productsSource.XPath = "Products/Product";
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Binding XML Data from Other Sources</title>
</head>
<body>
<form id="form1" runat="server">
<asp:XmlDataSource id="productsSource" runat="server"/>
<asp:GridView ID="productView" Runat="server" DataSourceID="productsSource"
AutoGenerateColumns="False">
<Columns>
<asp:BoundField HeaderText="Product ID" DataField="ProductID"></asp:BoundField>
<asp:BoundField HeaderText="Product Name" DataField="Name"></asp:BoundField>
</Columns>
</asp:GridView>
</form>
</body>
</html>
Caching XML Data in an XmlDataSource Control
<%--
Code Revised from
Professional ASP.NET 2.0 XML (Programmer to Programmer) (Paperback)
by Thiru Thangarathinam
# Publisher: Wrox (January 18, 2006)
# Language: English
# ISBN: 0764596772
--%>
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Xml" %>
<script runat="server">
void Page_Load(object sender, EventArgs e)
{
lblCurrentTime.Text = "Current Time is : " + DateTime.Now.ToLongTimeString();
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Caching XML Data in an XmlDataSource Control</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label Runat="server" ID="lblCurrentTime"></asp:Label>
<asp:GridView ID="GridView1" Runat="server" DataSourceID="XmlDataSource1" AutoGenerateColumns="False">
<Columns>
<asp:BoundField HeaderText="ISBN" DataField="ISBN" SortExpression="ISBN"></asp:BoundField>
<asp:BoundField HeaderText="Title" DataField="Title" SortExpression="Title"></asp:BoundField>
<asp:BoundField HeaderText="Price" DataField="Price" SortExpression="Price"></asp:BoundField>
</Columns>
</asp:GridView>
<asp:XmlDataSource EnableCaching="true" CacheDuration="100" CacheExpirationPolicy="Absolute"
ID="XmlDataSource1" Runat="server" DataFile="Bookstore.xml"
XPath="bookstore/genre[@name="Fiction"]/book">
</asp:XmlDataSource>
</div>
</form>
</body>
</html>
<%--
<bookstore>
<genre name="Fiction">
<book ISBN="10-861003-324" Title="title 1" Price="19.99">
<chapter num="1" name="Introduction">
A
</chapter>
<chapter num="2" name="Body">
B
</chapter>
<chapter num="3" name="Conclusion">
C
</chapter>
</book>
<book ISBN="1-861001-57-5" Title="title " Price="24.95">
<chapter num="1" name="Introduction">
D
</chapter>
<chapter num="2" name="Body">
E
</chapter>
<chapter num="3" name="Conclusion">
F
</chapter>
</book>
</genre>
<genre name="NonFiction">
<book ISBN="10-861003-324" Title="title 2" Price="19.99">
<chapter num="1" name="Introduction">
G
</chapter>
<chapter num="2" name="Body">
H
</chapter>
<chapter num="3" name="Conclusion">
I
</chapter>
</book>
<book ISBN="1-861001-57-6" Title="title 3" Price="27.95">
<chapter num="1" name="Introduction">
J
</chapter>
<chapter num="2" name="Body">
K
</chapter>
<chapter num="3" name="Conclusion">
L
</chapter>
</book>
</genre>
</bookstore>
--%>
Create asp XmlDataSource
<%--
Code Revised from
Professional ASP.NET 2.0 XML (Programmer to Programmer) (Paperback)
by Thiru Thangarathinam
# Publisher: Wrox (January 18, 2006)
# Language: English
# ISBN: 0764596772
--%>
<%@ Page Language="C#" %>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Binding XML Data from an XmlDataSource Control</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TreeView ID="TreeView1" Runat="server" DataSourceID="XmlDataSource1">
<DataBindings>
<asp:TreeNodeBinding ImageUrl="openbook.gif" TextField="Title" DataMember="book"></asp:TreeNodeBinding>
<asp:TreeNodeBinding ImageUrl="notepad.gif" TextField="name" DataMember="chapter"></asp:TreeNodeBinding>
</DataBindings>
</asp:TreeView>
</div>
<div>
<asp:XmlDataSource ID="XmlDataSource1" Runat="server" DataFile="Bookstore.xml"
XPath="bookstore/genre[@name="Fiction"]/book">
</asp:XmlDataSource>
</div>
</form>
XPath="bookstore/genre[@name="Fiction"]/book"</body>
</html>
<%-- Bookstore.xml
<bookstore>
<genre name="Fiction">
<book ISBN="10-861003-324" Title="title 1" Price="19.99">
<chapter num="1" name="Introduction">
A
</chapter>
<chapter num="2" name="Body">
B
</chapter>
<chapter num="3" name="Conclusion">
C
</chapter>
</book>
<book ISBN="1-861001-57-5" Title="title " Price="24.95">
<chapter num="1" name="Introduction">
D
</chapter>
<chapter num="2" name="Body">
E
</chapter>
<chapter num="3" name="Conclusion">
F
</chapter>
</book>
</genre>
<genre name="NonFiction">
<book ISBN="10-861003-324" Title="title 2" Price="19.99">
<chapter num="1" name="Introduction">
G
</chapter>
<chapter num="2" name="Body">
H
</chapter>
<chapter num="3" name="Conclusion">
I
</chapter>
</book>
<book ISBN="1-861001-57-6" Title="title 3" Price="27.95">
<chapter num="1" name="Introduction">
J
</chapter>
<chapter num="2" name="Body">
K
</chapter>
<chapter num="3" name="Conclusion">
L
</chapter>
</book>
</genre>
</bookstore>
--%>
Enter an XML filename or raw XML starting with
<%@ Page Language="C#" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>Default</title>
<script runat="server">
private void LoadButton_Click(object sender, System.EventArgs e) {
System.IO.Stream xmlDocStream = GetXmlDoc(XmlSourceTextBox.Text);
System.Xml.XmlDocument xmlSource = new System.Xml.XmlDocument();
xmlSource.Load(xmlDocStream);
ResultText.Text=xmlSource.InnerXml;
}
public static System.IO.Stream GetXmlDoc(string xmlsource) {
System.IO.Stream stream=null;
if(xmlsource.StartsWith("<?xml") || xmlsource.StartsWith("<schema") ) {
stream = new System.IO.MemoryStream(System.Text.ASCIIEncoding.ASCII.GetBytes(xmlsource));
} else {
try {
System.Uri xmluri = new System.Uri(xmlsource);
if(xmluri.IsFile) {
stream = new System.IO.FileStream(xmlsource, System.IO.FileMode.Open);
} else {
System.Net.HttpWebRequest request = (System.Net.HttpWebRequest) System.Net.WebRequest.Create(xmluri);
System.Net.WebResponse response = request.GetResponse();
stream = response.GetResponseStream();
}
}catch(Exception e) {
}
}
return stream;
}
</script>
</HEAD>
<body>
<form id="Form1" method="post" runat="server">
Enter an XML filename or just some raw XML starting with <?xml:<br />
<asp:textbox id="XmlSourceTextBox" runat="server" Width="377px" Height="162px" TextMode="MultiLine"></asp:textbox><br />
<asp:button id="LoadButton" runat="server" Text="Load XML Document" OnClick="LoadButton_Click"></asp:button><br />
<asp:TextBox id="ResultText" runat="server" Width="381px" Height="194px" TextMode="MultiLine"></asp:TextBox>
</form>
</body>
</HTML>
Fill XmlDataSource with your code
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="XmlDataSourceNoFile" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:XmlDataSource ID="sourceDVD" runat="server" ></asp:XmlDataSource>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="sourceDVD">
<Columns>
<asp:TemplateField HeaderText="DVD">
<ItemTemplate>
<%#XPath("./@ID")%><br />
<b><%#XPath("./Title")%></b><br />
<%#XPath("./Director")%><br />
<%#XPath("./Price", "{0:c}")%><br />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
</form>
</body>
</html>
File: Default.aspx.cs
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class XmlDataSourceNoFile : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
sourceDVD.Data=@"<DvdList>
<DVD ID="1" Category="category 1">
<Title>title 1</Title>
<Director>director 1</Director>
<Price>1</Price>
<Starring>
<Star>star 1</Star>
<Star>star 2</Star>
</Starring>
</DVD>
</DvdList>";
}
}
Handling XmlDataSource Events
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Xml.Xsl" %>
<script runat="server">
protected void bookSource_Transforming(object sender, EventArgs e)
{
int discountPercentage = 10;
XsltArgumentList argList = new XsltArgumentList();
argList.AddParam("discount", "", discountPercentage.ToString());
((XmlDataSource) sender).TransformArgumentList = argList;
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Handling XmlDataSource Events</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="bookView" Runat="server" DataSourceID="bookSource" AutoGenerateColumns="False">
<Columns>
<asp:BoundField HeaderText="ISBN" DataField="ISBN" SortExpression="ISBN"></asp:BoundField>
<asp:BoundField HeaderText="Title" DataField="Title" SortExpression="Title"></asp:BoundField>
<asp:BoundField HeaderText="Price" DataField="Price" SortExpression="Price"></asp:BoundField>
<asp:BoundField HeaderText="Discount" DataField="Discount" SortExpression="Discount"></asp:BoundField>
</Columns>
</asp:GridView>
<asp:XmlDataSource ID="bookSource" Runat="server" DataFile="~/Data.xml"
XPath="Data/genre[@name ="Fiction"]/book" TransformFile="~/Data_with_parameter.xsl"
OnTransforming="bookSource_Transforming">
</asp:XmlDataSource>
</div>
</form>
</body>
</html>
File: ~/Data.xml
<Data>
<genre name="Fiction">
<book ISBN="1" Title="title 1" Price="19.99" Discount="1.999">
<chapter num="1" name="Introduction">
Abstract...
</chapter>
<chapter num="2" name="Body">
Abstract...
</chapter>
<chapter num="3" name="Conclusion">
Abstract...
</chapter>
</book>
</genre>
<genre name="NonFiction">
<book ISBN="2" Title="title 2" Price="27.95" Discount="2.795">
<chapter num="1" name="Introduction">
Abstract...
</chapter>
<chapter num="2" name="Body">
Abstract...
</chapter>
<chapter num="3" name="Conclusion">
Abstract...
</chapter>
</book>
</genre>
</Data>
File: ~/Data_with_parameter.xsl
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="discount"/>
<xsl:template match="Data">
<Data>
<xsl:apply-templates select="genre"/>
</Data>
</xsl:template>
<xsl:template match="genre">
<genre>
<xsl:attribute name="name">
<xsl:value-of select="@name"/>
</xsl:attribute>
<xsl:apply-templates select="book"/>
</genre>
</xsl:template>
<xsl:template match="book">
<book>
<xsl:attribute name="ISBN">
<xsl:value-of select="@ISBN"/>
</xsl:attribute>
<xsl:attribute name="title">
<xsl:value-of select="@Title"/>
</xsl:attribute>
<xsl:attribute name="price">
<xsl:value-of select="@Price"/>
</xsl:attribute>
<xsl:attribute name="discount">
<xsl:value-of select="$discount * @Price"/>
</xsl:attribute>
<xsl:apply-templates select="chapters/chapter" />
</book>
</xsl:template>
<xsl:template match="chapter">
<chapter>
<xsl:attribute name="num">
<xsl:value-of select="@num"/>
</xsl:attribute>
<xsl:attribute name="name">
<xsl:value-of select="@name"/>
</xsl:attribute>
<xsl:apply-templates/>
</chapter>
</xsl:template>
</xsl:stylesheet>
Programmatically Creating an XmlDataSource Control
<%@ Page Language="C#" %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
XmlDataSource bookSource = new XmlDataSource();
bookSource.DataFile = "~/Data.xml";
bookSource.XPath = "Data/genre[@name ="Fiction"]/book";
bookView.DataSource = bookSource;
bookView.DataBind();
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Programmatically Creating an XmlDataSource Control</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="bookView" Runat="server" AutoGenerateColumns="False">
<Columns>
<asp:BoundField HeaderText="ISBN" DataField="ISBN" SortExpression="ISBN"></asp:BoundField>
<asp:BoundField HeaderText="Title" DataField="Title" SortExpression="Title"></asp:BoundField>
<asp:BoundField HeaderText="Price" DataField="Price" SortExpression="Price"></asp:BoundField>
</Columns>
</asp:GridView>
</div>
</form>
</body>
</html>
File: ~/Data.xml
<Data>
<genre name="Fiction">
<book ISBN="1" Title="title 1" Price="19.99" Discount="1.999">
<chapter num="1" name="Introduction">
Abstract...
</chapter>
<chapter num="2" name="Body">
Abstract...
</chapter>
<chapter num="3" name="Conclusion">
Abstract...
</chapter>
</book>
</genre>
<genre name="NonFiction">
<book ISBN="2" Title="title 2" Price="27.95" Discount="2.795">
<chapter num="1" name="Introduction">
Abstract...
</chapter>
<chapter num="2" name="Body">
Abstract...
</chapter>
<chapter num="3" name="Conclusion">
Abstract...
</chapter>
</book>
</genre>
</Data>
Updating Data through XmlDataSource Control
<%@ Page Language="C#" %>
<%@ Import NameSpace="System.Xml" %>
<script runat="server" >
void btnDiscount_Click(Object sender, EventArgs e)
{
XmlDocument doc = new XmlDocument();
doc = (XmlDocument)bookSource.GetXmlDocument();
double discountPercent = Convert.ToInt32(txtDiscountPercent.Text);
string path = "Data/genre/book";
XmlNodeList nodeList = doc.SelectNodes(path);
for(int i=0; i< nodeList.Count ; i++)
{
XmlNode node = nodeList[i];
double price = Convert.ToDouble(node.Attributes["Price"].Value);
double discount = price * (discountPercent/100);
XmlAttribute discountAttribute = doc.CreateAttribute("Discount");
discountAttribute.Value = discount.ToString();
node.Attributes.Append(discountAttribute);
}
bookSource.Save();
bookRepeater.DataBind();
}
</script>
<html>
<head>
<title>Updating Data through XmlDataSource Control</title>
</head>
<body>
<form id="Form1" runat="server" >
<asp:XmlDataSource runat="server" ID="bookSource" XPath="Data/genre/book"
DataFile="~/Data.xml" EnableViewState="True"/>
<asp:Repeater runat="server" ID="bookRepeater" DataSourceID="bookSource" >
<ItemTemplate >
<h2><%# XPath ("@Title") %> </h2>
<b>ISBN:</b><%# XPath ("@ISBN") %> <%# XPath ("author/last-name/text()") %>
<b>Price:</b><%# XPath ("@Price") %>
<b>Discount:</b><%# XPath ("@Discount") %>
</ItemTemplate>
</asp:Repeater>
<p>
Enter the discount percentage:<asp:TextBox runat="server" ID="txtDiscountPercent" />
<asp:Button runat="server" ID="btnAddDiscount" onclick="btnDiscount_Click"
Text="Add Discount" /></p>
</form>
</body>
</html>
File: ~/Data.xml
<Data>
<genre name="Fiction">
<book ISBN="1" Title="title 1" Price="19.99" Discount="1.999">
<chapter num="1" name="Introduction">
Abstract...
</chapter>
<chapter num="2" name="Body">
Abstract...
</chapter>
<chapter num="3" name="Conclusion">
Abstract...
</chapter>
</book>
</genre>
<genre name="NonFiction">
<book ISBN="2" Title="title 2" Price="27.95" Discount="2.795">
<chapter num="1" name="Introduction">
Abstract...
</chapter>
<chapter num="2" name="Body">
Abstract...
</chapter>
<chapter num="3" name="Conclusion">
Abstract...
</chapter>
</book>
</genre>
</Data>
Use ItemTemplate and XPath to display data from XmlDataSource
<%@ Page Language="C#" AutoEventWireup="false" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:XmlDataSource ID="sourceDVD"
runat="server"
DataFile="~/Data.xml">
</asp:XmlDataSource>
<asp:GridView ID="GridView1"
runat="server"
AutoGenerateColumns="False"
DataSourceID="sourceDVD">
<Columns>
<asp:TemplateField HeaderText="DVD">
<ItemTemplate>
<%#XPath("./@ID")%><br />
<b><%#XPath("./Title")%></b><br />
<%#XPath("./Director")%><br />
<%#XPath("./Price", "{0:c}")%><br />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
</form>
</body>
</html>
File: Data.xml
<?xml version="1.0"?>
<DvdList>
<DVD ID="1" Category="Category 1">
<Title>title 1</Title>
<Director>directory 2</Director>
<Price>1</Price>
<Starring>
<Star>star 1</Star>
<Star>star 2</Star>
</Starring>
</DVD>
<DVD ID="2" Category="Category 2">
<Title>title 2</Title>
<Director>directory 2</Director>
<Price>2</Price>
<Starring>
<Star>star 3</Star>
<Star>star 4</Star>
</Starring>
</DVD>
</DvdList>
Using Inline XML Data in an XmlDataSource Control
<%@ Page Language="C#" %>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Using Inline XML Data in an XmlDataSource Control</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TreeView ID="bookView" Runat="server" DataSourceID="bookSource">
<DataBindings>
<asp:TreeNodeBinding ImageUrl="~/Images/openbook.gif" TextField="Title" DataMember="book"></asp:TreeNodeBinding>
<asp:TreeNodeBinding ImageUrl="~/Images/notepad.gif" TextField="name" DataMember="chapter"></asp:TreeNodeBinding>
</DataBindings>
</asp:TreeView>
</div>
<div>
<asp:XmlDataSource ID="bookSource" Runat="server" XPath="Data/book">
<Data>
<genre name="Fiction">
<book ISBN="1" Title="title 1" Price="19.99" Discount="1.999">
<chapter num="1" name="Introduction">
Abstract...
</chapter>
<chapter num="2" name="Body">
Abstract...
</chapter>
<chapter num="3" name="Conclusion">
Abstract...
</chapter>
</book>
</genre>
</Data>
</asp:XmlDataSource>
</div>
</form>
</html>
Using the XmlDataSource control to consume an RSS feed
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ Page Language="C#" %>
<script runat="server">
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:XmlDataSource ID="XmlDataSource1"
Runat="server"
DataFile="http://msdn.microsoft.ru/rss.xml"
XPath="rss/channel/item">
</asp:XmlDataSource>
</div>
</form>
</body>
</html>
XmlDataSource and XML document
<%@ Page Language="C#" AutoEventWireup="false" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:XmlDataSource ID="sourceDVD"
runat="server"
DataFile="~/Data.xml">
</asp:XmlDataSource>
<asp:GridView ID="GridView1"
runat="server"
AutoGenerateColumns="False"
DataSourceID="sourceDVD">
<Columns>
<asp:BoundField DataField="ID" HeaderText="ID" SortExpression="ID" />
<asp:BoundField DataField="Category" HeaderText="Category" SortExpression="Category" />
</Columns>
</asp:GridView>
</div>
</form>
</body>
</html>
File: Data.xml
<?xml version="1.0"?>
<DvdList>
<DVD ID="1" Category="Category 1">
<Title>title 1</Title>
<Director>directory 2</Director>
<Price>1</Price>
<Starring>
<Star>star 1</Star>
<Star>star 2</Star>
</Starring>
</DVD>
<DVD ID="2" Category="Category 2">
<Title>title 2</Title>
<Director>directory 2</Director>
<Price>2</Price>
<Starring>
<Star>star 3</Star>
<Star>star 4</Star>
</Starring>
</DVD>
</DvdList>