asp.net(c#) 使用xsl转换xml文件

 

什么是XML?

       XML是The Extensible Markup Language(可扩展标识语言)的简写。目前推荐遵循的是W3C组织于2000年10月6日发布的XML1.0版本,参考(www.w3.org/TR/2000/REC-XML-20001006)。和HTML一样,XML同样来源于SGML,但XML是一种能定义其他语言的语。XML最初设计的目的是弥补HTML的不足,以强大的扩展性满足网络信息发布的需要,后来逐渐用于网络数据的转换和描述。

目前在网站信息传递中常用的RSS就是典型的XML应用。

本来还不想学xml和xsl,今天终于还是被逼着学了,原因就是今天碰到这样一个问题。

有个XMLFile.xml的文件,代码如下:

<?xml version="1.0" encoding="utf-8"?>
<book>
  <bookRecord>
    <name>阿会楠</name>
    <content>sosuo8.com</content>
  </bookRecord>
</book>

我希望通过XmlDataSource和GridView控件绑定并且显示数据,结果跳出这样的错误:


“/xml操纵”应用程序中的服务器错误。

ID 为“GridView1”的 GridView 的数据源没有任何可用来

生成列的属性或特性。请确保您的数据源有内容。

查了下原因:在将表格数据绑定控件(GridView)绑定到XmlDataSource控件时,该控件仅呈现XML层次结构的第一级。XmlDataSource控件将第一级节点的属性公开为数据表中的等效列。而我是以元素的形式保存内容到XML文件的。

所以我们要把XMLFile.xml里面的代码转换成:

<?xml version="1.0" encoding="utf-8"?>
<book>
  <bookRecord name="a" content="a"></bookRecord>
  <bookRecord name="b" content="b"></bookRecord>
</book>

我知道可以通过使用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="book">
    <!--
        This is an XSLT template file. Fill in this area with the
        XSL elements which will transform your XML to XHTML.
    -->
  <xsl:element name="book">
    <xsl:for-each select="..//bookRecord">
      <xsl:element name="bookRecord">
        <xsl:attribute name="name">
          <xsl:value-of select="name"/>
          </xsl:attribute>
        <xsl:attribute name="content">
          <xsl:value-of select="content"/>
        </xsl:attribute>
      </xsl:element>
    </xsl:for-each>
  </xsl:element>
</xsl:template>

</xsl:stylesheet>

在asp.net中使用“System.Xml.Xsl”命名空间提供的“XslTransform”类,把XMLFile.xml 通过XSLTFile.xsl转换成XMLFile2.xml,其实现代码如下:

 //加载原文件
XmlDocument mydoc = new XmlDocument();
mydoc.Load(Server.MapPath("../XMLFile.xml"));
//初始化转换类
XslTransform trans = new XslTransform();
//加载转换文件
trans.Load(Server.MapPath("../XSLTFile.xsl"));
 //实行转换
 trans.Transform(Server.MapPath("../XMLFile.xml"), Server.MapPath("../XMLFile2.xml"));

结果:

<?xml version="1.0" encoding="utf-8"?><book><bookRecord name="a" content="a"></bookRecord><bookRecord name="b" content="b"></bookRecord></book>

真奇怪,转换后没有换行,也不知道是啥原因。

 

出处:http://www.sosuo8.com/article/show.asp?id=1343

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值