在asp.net(C#)中采用自定義標(biāo)簽和XML、XSL顯示數(shù)據(jù)
更新時(shí)間:2009年06月26日 12:12:18 作者:
在asp.net(C#)中采用自定義標(biāo)簽和XML、XSL顯示數(shù)據(jù)的實(shí)現(xiàn)代碼。
標(biāo)簽定義
public class Encoding
{
public string Encode(string cSource)
{
return System.Web.HttpUtility.HtmlEncode(cSource);
}
}
public class EmList : Label
{
public override bool EnableViewState
{
get{ return false;}
}
public string XslFile{get;set;}
public object SerialObject{get;set;}
protected override void Render(HtmlTextWriter writer)
{
if (SerialObject == null)
{
throw new Exception("對(duì)象未初始化");
}
System.Xml.Serialization.XmlSerializer oSerial = new System.Xml.Serialization.XmlSerializer(SerialObject.GetType());
System.Text.StringBuilder oSb = new System.Text.StringBuilder();
System.IO.StringWriter oWr = new System.IO.StringWriter(oSb);
string Xml = "";
oSerial.Serialize(oWr, SerialObject);
Xml =oSb.ToString();
string cXslFileName = this.MapPathSecure(XslFile);
if (!System.IO.File.Exists(cXslFileName))
{
throw new Exception("請(qǐng)加自己的處理異常程序");
}
System.Xml.Xsl.XsltArgumentList xslArgs = new System.Xml.Xsl.XsltArgumentList();
Encoding oEn = new Encoding();
xslArgs.AddExtensionObject("urn:Encoding", oEn);
System.Xml.XmlDocument oDoc = new System.Xml.XmlDocument();
try
{
oDoc.LoadXml(Xml);
}
catch
{
throw new Exception("請(qǐng)加自己的處理異常程序");
}
System.Xml.Xsl.XslCompiledTransform oTran = new System.Xml.Xsl.XslCompiledTransform();
string cXsl = "";
try
{
cXsl = System.IO.File.ReadAllText(cXslFileName);
}
catch
{
throw new Exception("請(qǐng)加自己的處理異常程序");
}
System.IO.StringReader oSr=new System.IO.StringReader(cXsl);
System.Xml.XmlReader oRe=System.Xml.XmlReader.Create(oSr);
try
{
oTran.Load(oRe);
}
catch
{
throw new Exception("請(qǐng)加自己的處理異常程序");
}
try
{
oTran.Transform(oDoc, xslArgs, writer);
}
catch
{
throw new Exception("請(qǐng)加自己的處理異常程序");
}
}
}
public class PageBar : System.Web.UI.HtmlControls.HtmlControl
{
public int PageNum{get;set;}
public int PageSize { get; set; }
public int PageCount { get; set; }
public string BaseUrl{get;set;}
protected override void Render(HtmlTextWriter writer)
{
writer.Write(string.Format("<a href={0}?PageNum=1>第一頁(yè)</a>|<a href={0}?PageNum={1}>上一頁(yè)</a>|<a href={0}?PageNum={2}>下一頁(yè)</a>|<a href={0}?PageNum={3}>尾頁(yè)</a> (共{4}當(dāng)前頁(yè){5})", BaseUrl, PageNum - 1 > 0 ? PageNum - 1 : 1, PageNum + 1 > PageCount ? PageCount : PageNum + 1, PageCount, PageCount, PageNum));
}
}
頁(yè)面定義
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>
<%@Register TagPrefix="CS" Namespace="WebApplication1.Control" Assembly=" WebApplication1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title></title>
</head>
<body>
<CS:EmList SerialObject="<%#List%>" XslFile="XSL/test.xslt" runat="server" /><br />
<CS:PageBar PageNum="<%#PageNum%>" BaseUrl="<%#Request.Path%>" PageCount="5" runat="server" />
</body>
</html>
其中List和PageNum為頁(yè)面屬性
XSLT:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:Encoding="urn:Encoding">
<xsl:output method="text" />
<xsl:template match="/">
<h2>
<xsl:for-each select="ArrayOfEmployeeEntity/EmployeeEntity">
<![CDATA[<a href="http://www.dhdzp.com/article/9720.htm]]><xsl:value-of select="Encoding:Encode(EmployeeID)"/><![CDATA[" alt="]]><xsl:value-of select= "Encoding:Encode(Full_Name)"/><![CDATA["><br/>]]><xsl:value-of select= "Encoding:Encode(Email_Address)"/></xsl:for-each>
</h2>
</xsl:template>
</xsl:stylesheet>
復(fù)制代碼 代碼如下:
public class Encoding
{
public string Encode(string cSource)
{
return System.Web.HttpUtility.HtmlEncode(cSource);
}
}
public class EmList : Label
{
public override bool EnableViewState
{
get{ return false;}
}
public string XslFile{get;set;}
public object SerialObject{get;set;}
protected override void Render(HtmlTextWriter writer)
{
if (SerialObject == null)
{
throw new Exception("對(duì)象未初始化");
}
System.Xml.Serialization.XmlSerializer oSerial = new System.Xml.Serialization.XmlSerializer(SerialObject.GetType());
System.Text.StringBuilder oSb = new System.Text.StringBuilder();
System.IO.StringWriter oWr = new System.IO.StringWriter(oSb);
string Xml = "";
oSerial.Serialize(oWr, SerialObject);
Xml =oSb.ToString();
string cXslFileName = this.MapPathSecure(XslFile);
if (!System.IO.File.Exists(cXslFileName))
{
throw new Exception("請(qǐng)加自己的處理異常程序");
}
System.Xml.Xsl.XsltArgumentList xslArgs = new System.Xml.Xsl.XsltArgumentList();
Encoding oEn = new Encoding();
xslArgs.AddExtensionObject("urn:Encoding", oEn);
System.Xml.XmlDocument oDoc = new System.Xml.XmlDocument();
try
{
oDoc.LoadXml(Xml);
}
catch
{
throw new Exception("請(qǐng)加自己的處理異常程序");
}
System.Xml.Xsl.XslCompiledTransform oTran = new System.Xml.Xsl.XslCompiledTransform();
string cXsl = "";
try
{
cXsl = System.IO.File.ReadAllText(cXslFileName);
}
catch
{
throw new Exception("請(qǐng)加自己的處理異常程序");
}
System.IO.StringReader oSr=new System.IO.StringReader(cXsl);
System.Xml.XmlReader oRe=System.Xml.XmlReader.Create(oSr);
try
{
oTran.Load(oRe);
}
catch
{
throw new Exception("請(qǐng)加自己的處理異常程序");
}
try
{
oTran.Transform(oDoc, xslArgs, writer);
}
catch
{
throw new Exception("請(qǐng)加自己的處理異常程序");
}
}
}
public class PageBar : System.Web.UI.HtmlControls.HtmlControl
{
public int PageNum{get;set;}
public int PageSize { get; set; }
public int PageCount { get; set; }
public string BaseUrl{get;set;}
protected override void Render(HtmlTextWriter writer)
{
writer.Write(string.Format("<a href={0}?PageNum=1>第一頁(yè)</a>|<a href={0}?PageNum={1}>上一頁(yè)</a>|<a href={0}?PageNum={2}>下一頁(yè)</a>|<a href={0}?PageNum={3}>尾頁(yè)</a> (共{4}當(dāng)前頁(yè){5})", BaseUrl, PageNum - 1 > 0 ? PageNum - 1 : 1, PageNum + 1 > PageCount ? PageCount : PageNum + 1, PageCount, PageCount, PageNum));
}
}
頁(yè)面定義
復(fù)制代碼 代碼如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>
<%@Register TagPrefix="CS" Namespace="WebApplication1.Control" Assembly=" WebApplication1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title></title>
</head>
<body>
<CS:EmList SerialObject="<%#List%>" XslFile="XSL/test.xslt" runat="server" /><br />
<CS:PageBar PageNum="<%#PageNum%>" BaseUrl="<%#Request.Path%>" PageCount="5" runat="server" />
</body>
</html>
其中List和PageNum為頁(yè)面屬性
XSLT:
復(fù)制代碼 代碼如下:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:Encoding="urn:Encoding">
<xsl:output method="text" />
<xsl:template match="/">
<h2>
<xsl:for-each select="ArrayOfEmployeeEntity/EmployeeEntity">
<![CDATA[<a href="http://www.dhdzp.com/article/9720.htm]]><xsl:value-of select="Encoding:Encode(EmployeeID)"/><![CDATA[" alt="]]><xsl:value-of select= "Encoding:Encode(Full_Name)"/><![CDATA["><br/>]]><xsl:value-of select= "Encoding:Encode(Email_Address)"/></xsl:for-each>
</h2>
</xsl:template>
</xsl:stylesheet>
您可能感興趣的文章:
相關(guān)文章
AspNetPager+GridView實(shí)現(xiàn)分頁(yè)的實(shí)例代碼
AspNetPager+GridView實(shí)現(xiàn)分頁(yè)的實(shí)例代碼,需要的朋友可以參考一下2013-03-03
輕松解決asp.net用戶(hù)ASPNET登錄失敗問(wèn)題的方法分享
這篇文章介紹了asp.net用戶(hù)ASPNET登錄失敗問(wèn)題的方法,有需要的朋友可以參考一下2013-11-11
解決 The Controls collection cannot be modified because the co
在.aspx或.ascx的如果包括%,并在.aspx, .ascs中使用了AjaxToolkit中的控件,那么很可能會(huì)引發(fā)這個(gè)問(wèn)題,下面給出具體的解決方法。2010-10-10
將文件上傳、下載(以二進(jìn)制流保存到數(shù)據(jù)庫(kù))實(shí)現(xiàn)代碼
將文件以二進(jìn)制流的格式寫(xiě)入數(shù)據(jù)庫(kù):首先獲得文件路徑,然后將文件以二進(jìn)制讀出保存在一個(gè)二進(jìn)制數(shù)組中具體請(qǐng)祥看本文,希望對(duì)你有所幫助2013-05-05
ASP .NET Core API發(fā)布與部署以及遇到的坑和解決方法
這篇文章主要介紹了ASP .NET Core API發(fā)布與部署以及遇到的坑和解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
.NET中XML序列化和反序列化常用類(lèi)和屬性小結(jié)
本文主要介紹了.NET中XML序列化和反序列化常用類(lèi)和屬性小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04
asp.net(c#)做一個(gè)網(wǎng)頁(yè)數(shù)據(jù)采集工具
最近做一個(gè)網(wǎng)站,該網(wǎng)站需要添加4000多 產(chǎn)品信息,如果用人工方法去別的網(wǎng)站copy那至少要花費(fèi)半月時(shí)間才能完成,所以我個(gè)辦法使用c#作出來(lái)了一個(gè)網(wǎng)頁(yè)數(shù)據(jù)采集軟件.2009-12-12

