简单用xslt样式表解析xml文件。

简单用xslt样式表解析xml文件。

此例只用到了System.Xml.XPath.XPathDocumentSystem.Xml.Xsl.XslTransform两个类。

 

建一个类库工程,在里面对服务器控件进行定义,简单定义代码如下:

public class UserNavigator : System.Web.UI.Control

    {

        private string strTransformFilePath;//用于转换xml文件的xslt文件路径

        private string strSourceFilePath;//待转换的xml文件路径

 

        public string TransfromFilePath

        {

            set { strTransformFilePath = value; }

            get { return strTransformFilePath; }

        }

        public string SourceFilePath

        {

            set { strSourceFilePath = value; }

            get { return strSourceFilePath; }

        }

 

        protected override void OnInit(EventArgs e)

        {

            base.OnInit(e);

        }

 

        protected override void Render(HtmlTextWriter writer)

        {

            base.Render(writer);

 

            XPathDocument xPathDoc = new XPathDocument(Context.Server.MapPath(SourceFilePath));

            XslTransform xslTran = new XslTransform();

 

            xslTran.Load(Context.Server.MapPath(TransfromFilePath));

            xslTran.Transform(xPathDoc, null, writer);

        }

}

 

以上代码实现了一个例用xslt转化xml文件的类,为了要生成服务器控件,此类继承自System.Web.UI.Control类。这样一个简单转化xml的控件就完成了。

下面来测试这个控件,新建一个网站工程,建立xmlxslt文件,下面为待转化的xml文件NavMenu.xml

<?xml version="1.0" encoding="utf-8" ?>

<NavMenu title ="Navigator">

  <Item title="Item1">

    <ItemLink title="Item1_link" link="link1.aspx"></ItemLink>

  </Item>

  <Item title="Item2">

    <ItemLink title="Item2_link" link="link2.aspx"></ItemLink>

  </Item>

</NavMenu>

 

接着定义xslt文件XSLTNav.xsl,如下:

<?xml version="1.0" encoding="utf-8"?>

 

<xsl:stylesheet version="1.0"

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

 

<xsl:template match="/NavMenu">

  <table width="200px" border="0" cellspacing="0" cellpadding="0">

    <tr>

      <td >

       

        <xsl:value-of select="@title"/>

      </td>

    </tr>

    <xsl:for-each select="Item">

      <tr>

        <td>

          <xsl:value-of select="@title"/>

        </td>

      </tr>

      <xsl:for-each select="ItemLink">

      <tr>

        <td>

          <a>

          <xsl:attribute name="href">

            <xsl:value-of select="@link"/>

          </xsl:attribute>

          <xsl:value-of select="@title"/>

          </a>

        </td>

      </tr>

      </xsl:for-each>

    </xsl:for-each>

  </table>

</xsl:template>

 

</xsl:stylesheet>

 

新建一个aspx文件,生成上面建的类库工程,在网站工程中左边工具中会出现上面建的控件(类库与网站在一个解决方案中),将此用户控件拖到网页中,在属性窗口中会看到自己定义的两个属性,将上面的xmlxslt文件路径分别指定给这两个属性,保存在浏览器中浏览查看效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值