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>

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



上一篇:checkbox全选效果

下一篇:asp.net(c#) 取得网卡mac地址

留下脚印压缩包密码:sosuo8
名字:
全部评论:
评论guru2010-6-2 19:24:00
//加载原文件 
XmlDocument mydoc = new XmlDocument(); 
mydoc.Load(Server.MapPath("../XMLFile.xml")); 
 
这几行代码没意义
答复为什么没意义呢?
评论小黑侠2010-2-2 17:07:00
郁闷,你XSLTFile.xsl文件里少一句,我打上但是显示不出来,没办法告诉你了
答复谢谢你的热情脚印。希望加我的QQ:106494262上聊聊
评论小黑侠2010-2-2 17:05:00
转换后没有换行,是因为你没在你的XSLTFile.xsl文件里加上语句  “ ”
答复
评论小黑侠2010-2-2 17:05:00
少这句  
答复
评论小黑侠2010-2-2 17:04:00
 转换后没有换行,是因为你没在你的XSLTFile.xsl文件里加上语句 
答复
评论小黑侠2010-2-2 17:03:00
转换后没有换行,是因为你没在你的XSLTFile.xsl文件里加上   
答复
申明:本站部分文章来自网络,由于各种原因对文章的来源无从考究,如果您是“ asp.net(c#) 使用xsl转换xml文件 ”的原作者,若侵犯您的版权,请与我联系!在此请您原谅我的幼稚和无知!联系方法:email:ahuinan@21cn.com  QQ:106494262

感谢以下网友对网站提出的建议:
1、感谢“蓝树叶kiss”网友发现一个评论漏洞。(2009-2-28)
2、感谢“陈臣”对程序优化和seo方面的建议。(2009-3-18)
文章档案
  • 作者:阿会楠
  • 来源:搜索吧
  • 日期:2007-6-9 12:09:00
  • 点击:3581
网友投票(您觉得这篇文章怎样?)
loadding...请稍侯......