ASP.NET - XML Web 服务器控件概述

 

您可以使用 Xml Web 服务器控件来显示 XML 文档的内容,且不需要进行格式化或使用 XSL 转换。

 

一、方案

Xml Web 服务器控件读取 XML 并将其写入该控件所在的 ASP.NET 网页。如果将 XSL 转换 (XSLT) 应用到 XML,则最终转换的输出将呈现在该页中。

 

二、背景

您可以使用 XML Web 服务器控件将 XML 文档或 XSLT 转换的结果写入 ASP.ENT 网页。XML 输出显示在该控件所在的网页中。

说明: 若要将 XML 数据用作其他控件(如 RepeaterDataList GridView 控件)的源,可以使用 XmlDataSource 控件。

      XML XSLT 信息可以在外部文档中,或者可以内联方式包括 XML。有两种方式通过使用 XML Web 服务器控件中的属性设置来引用外部文档。您可以在控件标记中提供 XML 文档的路径,或者将 XML XSLT 文档以编程方式作为对象加载,然后将它们传递给控件。如果您喜欢以内联方式包括 XML,在控件的开始和结束标记之间写入 XML

可通过设置下表中列出的属性之一来指定要显示的 XML 文档。这三个属性表示可以显示的 XML 文档的不同类型。通过设置适当的属性,可以显示 System.Xml.XmlDocumentXML 字符串或 XML 文件。

属性

说明

Document

使用 System.Xml.XmlDocument 对象设置 XML 文档。

DocumentContent

使用字符串设置 XML 文档。

说明:

此属性通常是以声明方式设置的,具体方法是将文本放置到 Xml 控件的开始和结束 <asp:Xml> 标记之间。

DocumentSource

使用文件设置 XML 文档。

      若要显示 XML 文档,则必须至少设置一个 XML 文档属性。如果设置了多个 XML 文档属性,则将显示最后设置的属性中引用的 XML 文档。其他属性中的文档将被忽略。

      您可以选择性地设置属性,以指定一个在 XML 文档写入输出流之前对其进行格式化的 XSL 转换 (XSLT) 样式表。这些属性表示可用于格式化文档的不同类型的 XSL 转换样式表。通过设置适当的属性,可以用 System.Xml.Xsl.XslCompiledTransform 对象或 XSL 转换样式表文件来格式化 XML 文档。如果未指定 XSL 转换样式表,则可使用默认格式显示 XML 文档。

 

三、演练:使用转换在 Web 窗体页中显示 XML 文档

      本演练演示如何在网页中显示 XML 文档的信息。在本演练中,您将创建一个简单的 XML 文件。然后将使用 ASP.NET 服务器控件和 XSLT 转换在网页中显示 XML 文件的内容。

说明: 也可以将 XML 文件用作数据源,使用 GridView 控件等控件显示其内容。

      若要在网页中显示 XML 信息,必须提供格式设置和显示信息。例如,必须提供 table 元素、p 元素或显示信息时所要用的任何信息。另外,您必须说明 XML 文件中的数据如何适当地放入这些标记中。例如,您可能决定将 XML 文件中的每个元素显示为表中的一行。

提供这些说明的一种方式是在 ASP.NET 页面中使用代码来分析 XML 文件并将数据填充到适当的 HTML 标记中。此方法既费时又难以维护,但它也是对 XML 文件进行精确的编程控制的一种强有力的方式。

一种更好的方式是使用 XSL 转换语言并创建转换(即 XSL 文件)。XSL 转换包含以下信息:

·一个模板,类似于 HTML 页。该模板指定应如何显示 XML 信息。

·XSL 处理指令,它精确地指定如何将 XML 文件中的信息放入模板中。

      创建 XSL 转换后,必须将它们应用于 XML 文件。也就是说,应根据一个 XSL 文件对 XML 文件进行转换来处理该 XML 文件。输出是一个新文件,已根据转换文件对 XML 信息进行了格式设置。

这也是可以以编程方式执行的过程。但是,您还可以利用 Xml 服务器控件。此控件用作 ASP.NET 网页上的占位符。可将其属性设置为特定 XML 文件和 XSL 转换。处理网页时,控件会读取 XML,应用转换,然后显示结果。

      本演练演示如何通过 XSL 转换使用 Xml 服务器控件显示 XML 信息。在此方案中,您将具有以下项:

·包含多个虚构电子邮件的 XML 文件。

·两个 XSL 转换。一个只显示电子邮件的日期、发件人和主题。另一个显示整个电子邮件。

      您将创建一个网页,允许用户以两种不同的方式显示 XML 信息。该页包含一个“仅标题”复选框,该复选框是默认选中的。因此,默认转换是只显示电子邮件头的那个转换。如果用户清除该复选框,则重新显示具有完整电子邮件内容的 XML 信息。

3.1、创建网站和网页

在本部分演练中,将创建一个网站并为其添加新页。在本演练中,您将创建一个不需要使用 Microsoft Internet 信息服务 (IIS) 的文件系统网站。相反,您将在本地文件系统中创建和运行页。

创建文件系统网站

·打开 Visual Web Developer

·在“文件”菜单上单击“新建网站”。

·在“Visual Studio 已安装的模板”之下选择“ASP.NET 网站”。

·在“位置”框中选择“文件系统”,然后输入要在其中保存网站页面的文件夹的名称。例如,键入文件夹名“C:/WebSites”。

·在“语言”列表中,单击“Visual Basic”或“Visual C#”。

·单击“确定”。

 

3.2、添加 XML 文件和 XSL 转换

在本部分演练中,将创建一个 XML 文件和两个 XSLT 文件。

1、将 XML 文件添加到项目中

·在解决方案资源管理器中,右击“App_Data”文件夹,然后单击“添加新项”。

说明: XML 文件放入“App_Data”文件夹时,XML 文件就自动具有了允许 ASP.NET 在运行时对其进行读写的相应权限。另外,“App_Data”文件夹标记为不可浏览,因此可防止在浏览器中查看该文件。

·在“Visual Studio 已安装的模板”之下单击“XML 文件”。

·在“名称”框中键入 Emails.xml

·单击“添加”。

·创建一个仅包含 XML 指令的新 XML 文件。

·复制下面的 XML 数据,然后将其粘贴到文件中,并覆盖该文件中的内容。

<?xml version="1.0" ?>

  <messages>

    <message id="101">

      <to>JoannaF</to>

      <from>LindaB</from>

      <date>04 September 2007</date>

      <subject>Meeting tomorrow</subject>

      <body>Can you tell me what room where the committee meeting will be in?</body>

   </message>

   <message id="109">

      <to>JoannaF</to>

      <from>JohnH</from>

      <date>04 September 2007</date>

      <subject>I updated the site</subject>

      <body>I posted the latest updates to our internal Web site, as you requested. Let me know if you have any comments or questions. -- John

      </body>

   </message>

   <message id="123">

      <to>JoannaF</to>

      <from>LindaB</from>

      <date>05 September 2007</date>

      <subject>re: Meeting tomorrow</subject>

      <body>Thanks. By the way, do not forget to bring your notes from the conference. See you later!</body>

   </message>

</messages>

           ·保存文件并将其关闭。

下一步,将两个 XSL 转换添加到您的项目中。

 

      2、将 XSL 转换添加到您的项目中

·在解决方案资源管理器中,右击“App_Data”文件夹,然后单击“添加新项”。

·在“Visual Studio 已安装的模板”之下单击“文本文件”。没有转换文件的模板。因此,可以通过创建具有正确扩展名的文本文件的方式来创建。

·在“名称”框中键入 Email_headers.xslt

           ·单击“添加”。即创建了一个新的空白文件。

           ·复制下面的代码示例并将其粘贴到该文件中。

<?xml version='1.0'?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

    version="1.0">

<xsl:template match="/">

<html>

<body>

<table cellspacing="3" cellpadding="8">

   <tr bgcolor="#AAAAAA">

      <td class="heading"><strong>Date</strong></td>

      <td class="heading"><strong>From</strong></td>

      <td class="heading"><strong>Subject</strong></td>

   </tr>

   <xsl:for-each select="messages/message">

   <tr bgcolor="#DDDDDD">

       <td width="25%" valign="top">

         <xsl:value-of select="date"/>

       </td>

      <td width="20%" valign="top">

         <xsl:value-of select="from"/>

      </td>

       <td width="55%" valign="top">

         <strong><xsl:value-of select="subject"/></strong>

      </td>

   </tr>

   </xsl:for-each>

</table>

</body>

</html>

</xsl:template>

</xsl:stylesheet>

           说明: 可以随意调整此模板;例如,可以更改颜色、字体大小、样式或其他功能。

·保存文件并将其关闭。

·重复第 1 步到第 4 步,但这一次将文件命名为“Email_all.xslt”。

·将下面的代码示例粘贴到“Email_all.xslt”文件中。

<?xml version='1.0'?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

    version="1.0">

<xsl:template match="/">

<html>

<body>

<table cellspacing="10" cellpadding="4">

  <xsl:for-each select="messages/message">

  <tr bgcolor="#CCCCCC">

  <td class="info">

    Date: <strong><xsl:value-of select="date"/></strong>

       <br /><br />

    To: <strong><xsl:value-of select="to"/></strong>

       <br /><br />

    From: <strong><xsl:value-of select="from"/></strong>

       <br /><br />

    Subject: <strong><xsl:value-of select="subject"/></strong>

       <br /><br />

    <br /><br />

    <xsl:value-of select="body"/>

  </td>

  </tr>

  </xsl:for-each>

</table>

</body>

</html>

</xsl:template>

</xsl:stylesheet>

           ·保存文件并将其关闭。

 

3.3、向页添加 Xml 控件

具有一个 XML 文件和两个转换之后,即可使用它们在网页中显示信息。使用 Xml 服务器控件完成该操作。

      ·打开或切换到 Default.aspx 页。

      ·切换到“设计”视图。

      ·从“工具箱”的“标准”选项卡中,将一个“Xml”控件拖到该页上。一个表示“Xml”控件的灰色框即添加到该页中。

·选择该控件,然后在“属性”窗口中设置以下属性。

属性

设置

DocumentSource

~/App_Data/Emails.xml

TransformSource

~/App_Data/Email_headers.xslt

      这会使“XML”控件在默认情况下只显示电子邮件头。

 

3.4、添加控件以更改转换

在本部分演练中,您将使用一个复选框来使用户能够在转换间进行切换。Xml 控件当前应用只显示电子邮件标题的转换。

      ·将光标移到“Xml”控件前面,然后按几次 Enter,使“Xml”控件上方生成空白。

·从“工具箱”的“标准”选项卡中,将一个“CheckBox”控件拖到“XML”控件之上的页面中。

·设置“CheckBox”控件的以下属性。

属性 (Property)

设置

Text

仅标题

Checked

True

AutoPostBack

True,使用此设置则会发送窗体,并且用户一单击该复选框就进行处理。

      ·双击“CheckBox”控件。代码编辑器将打开,其中显示“CheckBox”控件的 CheckChanged 事件的处理程序,该处理程序名为“CheckBox1_CheckedChanged”。

·添加根据复选框的状态在 Email_headers.xslt Email_all.xslt 之间切换转换的代码。

下面的代码示例演示整个 CheckChanged 处理程序。

protected void CheckBox1_CheckedChanged(object sender,

        System.EventArgs e)

{

    if (CheckBox1.Checked)

    {

        Xml1.TransformSource = "~/App_Data/email_headers.xslt";

    }

     else

    {

        Xml1.TransformSource = "~/App_Data/email_all.xslt";

    }

}

 

四、如何:向 Web 窗体页添加 XML Web 服务器控件

4.1、向 Web 窗体页添加 XML Web 服务器控件

·从工具箱的“标准”选项卡中,将 Xml 控件拖到页面上。

·通过设置 Document DocumentSource 属性,或者通过将 XML 放在控件的开始标记和结束标记之间,加载您要显示在控件中的 XML 数据。

说明: 确保应用程序在运行时,具有读取 XML 文件的适当权限。

 

4.2、以编程方式向 Web 窗体页添加 XML Web 服务器控件

·创建 Xml 控件的一个实例并设置它的属性,如下面的代码示例所示:

System.Web.UI.WebControls.Xml myXML = new System.Web.UI.WebControls.Xml();

myXML.DocumentSource = "SourceDoc.xml";

myXML.TransformSource = "SourceTrans.xsl";

 

      ·将该新控件添加到页面上已有容器的 Controls 集合中,如下面的代码示例所示:

PlaceHolder1.Controls.Add(myXML);

      说明: 动态添加到 Web 窗体页的控件不会自动成为该页的视图状态的一部分。也就是说,在该页执行到服务器的往返行程时,既不会保存这些控件,也不会保存它们的值。因此,您负责保存想保留其值的任何动态生成的控件的状态。

 

五、如何:将 XML 数据加载到 XML Web 服务器控件中

有三种方式将 XML 数据加载到 Xml Web 服务器控件中:

·使用 DocumentSource 属性,提供外部 XML 文档的路径。

·将 XML 文档作为 XmlDocument 对象加载,并将其传递给控件,方法是使用 Load 方法事件,并将文档指定给 Xml 控件的 Document 属性。

·以内联方式在控件的开始和结束标记之间包括 XML 内容。

 

5.1、提供外部 XML 文档的路径

·向 Web 窗体页添加一个 Xml 控件。

·将该控件的 DocumentSource 属性设置为 XML 源文档的路径。

说明: 需要确保应用程序在运行时有足够的权限来读取 XML 文件。

除非还指定了 TransformSource 属性,否则该 XML 文档将直接写入输出流。TransformSource 必须是一个有效的 XSL 变换文档,该文档将用于在将 XML 文档的内容写入输出流之前,对 XML 文档进行变换。下面的代码示例演示如何通过使用相对路径来引用源文档。

<body>

    <h3>XML Example</h3>

    <form runat=server>

        <asp:Xml id="Xml1" DocumentSource="MySource.xml"

            TransformSource="MyStyle.xsl" runat="server" />

    </form>

</body>

 

5.2 XML 文档作为对象加载并将其传递到控件上

·向 Web 窗体页添加一个 Xml 控件。

·添加代码以加载 XML 源文档,并且将该源文档分配给控件的 Document 属性。例如:

private void Page_Load(object sender, System.EventArgs e)

{

    System.Xml.XmlDocument doc = new System.Xml.XmlDocument();

    doc.Load(Server.MapPath("MySource.xml"));

    System.Xml.Xsl.XslTransform trans = new

       System.Xml.Xsl.XslTransform();

    trans.Load(Server.MapPath("MyStyle.xsl"));

    Xml1.Document = doc;

    Xml1.Transform = trans;

}

 

5.3、以内联方式包括 XML 内容

·向 Web 窗体页添加一个 Xml 控件。

·查找 <asp:Xml> </asp:Xml> 标记。

·将 XML 代码添加到这两个标记之间。例如:

<asp:xml TransformSource="MyStyle.xsl" runat=server>

    <clients>

        <name>Frank Miller</name>

        <name>Judy Lew</name>

    </clients>

</asp:xml>

 

六、如何:转换 XML Web 服务器控件中的 XML 数据

      XSL 转换 (XSLT) 样式表(.xslt .xsl 文件)用于将源 XML 文档的内容转换为专门适合于特定用户、媒介或客户端的表现形式。有两种方式转换 Xml Web 服务器控件中的 XML 数据:

·指向外部 .xslt 文件,这会自动向 XML 文档应用转换。

·将作为 XslTransform 类型的对象的转换应用到 XML 文档。

      两种方法具有相同的结果,您的选择主要取决于在您的应用程序中使用哪一方法最方便。如果转换采用 .xsl .xslt 文件的形式,加载该文件将很简便。如果转换采用对象的形式(可能通过其他进程将其传递到您的应用程序),则您可以将它作为对象应用。

      说明: XslTransform 类还允许您将 .xsl .xslt 文件加载到转换的实例中。

 

6.1、从文件应用转换

·向 Web 窗体页添加一个 Xml 控件。

·将 Xml 控件的 TransformSource 属性设置为 XSLT 文档的路径。

说明: 需要确保应用程序在运行时有足够的权限来读取 XML 文件。

下面的代码示例演示如何应用从文件到名为 Xml1 Xml 控件的转换。

Xml1.TransformSource = "mystyle.xsl";

 

6.2、从 XslTransform 对象应用转换

·创建 XslTransform 类的实例。

·将 Xml 控件的 Transform 属性设置为转换的实例。

下面的代码示例演示如何创建转换类的实例并使用该实例将转换应用到一个对象上。在此示例中,XML 文档和事件都从文件读取,但在实际的应用程序中,这两个对象可以来自其他的组件。只要一加载该页就应用转换。

private void Page_Load(object sender, System.EventArgs e)

{

    System.Xml.XmlDocument doc = new System.Xml.XmlDocument();

    doc.Load(Server.MapPath("MySource.xml"));

    System.Xml.Xsl.XslTransform trans = new

       System.Xml.Xsl.XslTransform();

    trans.Load(Server.MapPath("MyStyle.xsl"));

    Xml1.Document = doc;

    Xml1.Transform = trans;

}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
4.1 使用控件显示文本 实例 显示密码格式文本 实例 显示长日期格式时间 实例 显示金额格式文本 4.2 使用控件显示图片 实例 显示验证码图片 实例 动态显示用户头像 实例 使用网页对话框显示图片 实例 实现上传图片 实例 GridView控件显示商品缩略图 4.3 控件的超级链接 实例 ImageButton按钮超级链接查看商品详细信息 实例 GridView控件中使用超级链接模板列查看详细信息 实例 DataList控件模板中使用LinkButton查看详细信息 4.4 下拉列表框的应用 实例 间接改变DropDownList当前选项 实例 实现多个DropDownList控件的联动 实例 动态添加、删除DropDownList控件选项 4.5 单选按钮的应用 实例 性别选择 实例 网络考试系统中单选题答案的选择 4.6 复选框的应用 实例 登录身份选择 实例 网络考试系统中多选题答案的选择 4.7 控件连接数据源 实例 通过向导配置AccessDataSource 实例 通过向导配置SqlDataSource 实例 通过向导配置XmlDataSource 4.8 GridView控件的应用 实例 数据绑定并实现分页功能 实例 选中、编辑、取消、删除数据项 实例 GridView实现正反双项排序功能 实例 GridView控件中DropDownList控件的绑定 实例 通过CheckBox删除选中记录 实例 删除GridView控件行信息弹出确认提示框 实例 在GridView控件中实现自动编号 实例 GridView控件实现主细表 实例 查看当前页详细信息 实例 单元格中指定字符串固定长度 实例 供求信息网审核发布信息 实例 根据学生成绩合格与不合格显示不同颜色 4.9 DataList控件的使用 实例 绑定数据并实现分页 实例 编辑DataList控件模板显示员工信息 实例 DataList控件实现主细表 实例 DataList控件实现删除功能 4.9 Repeater控件的使用 实例 Repeater控件数据绑定 实例 Repeater控件分页 实例 编辑Repeater控件标识商品信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值