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的文件,代码如下:
<book>
<bookRecord>
<name>阿会楠</name>
<content>sosuo8.com</content>
</bookRecord>
</book>
我希望通过XmlDataSource和GridView控件绑定并且显示数据,结果跳出这样的错误:
“/xml操纵”应用程序中的服务器错误。
ID 为“GridView1”的 GridView 的数据源没有任何可用来
生成列的属性或特性。请确保您的数据源有内容。
查了下原因:在将表格数据绑定控件(GridView)绑定到XmlDataSource控件时,该控件仅呈现XML层次结构的第一级。XmlDataSource控件将第一级节点的属性公开为数据表中的等效列。而我是以元素的形式保存内容到XML文件的。
所以我们要把XMLFile.xml里面的代码转换成:
<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地址
guru | 2010-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文件里加上 | |
![]() | |
感谢以下网友对网站提出的建议:
1、感谢“蓝树叶kiss”网友发现一个评论漏洞。(2009-2-28)
2、感谢“陈臣”对程序优化和seo方面的建议。(2009-3-18)
- 作者:阿会楠
- 来源:搜索吧
- 日期:2007-6-9 12:09:00
- 点击:3581
请稍侯......
- 不錯的東東,
打包demoupload.asp,js部分尾多了一個逗號
有空多交流:QQ 37787553 - 不錯的東東,
打包demoupload.asp,js部分尾多了一個逗號
有空多交流:QQ 37787553 - 站长 好!
- 网站不错<br>不知道URl是用什么生成的?
- update A
set A.OriginSalary=A.OriginSalary+B.AddSalary
from dbo.OriginSalary as A left join dbo.AddSalary as B on A.O_ID=B.O_ID - update A
set A.OriginSalary=A.OriginSalary+B.AddSalary
from dbo.OriginSalary as A left join dbo.AddSalary as B on A.O_ID=B.O_ID - 例子举得不好,为什么不直接用update解决呢?
update set A.OriginSalary=A.OriginSalary+B.AddSalary
from dbo.OriginSalary as A left join dbo.AddSalary as B on A.O_ID=B.O_ID - 例子举得不好,为什么不直接用update解决呢?
update set A.OriginSalary=A.OriginSalary+B.AddSalary
from dbo.OriginSalary as A left join dbo.AddSalary as B on A.O_ID=B.O_ID - 恭喜站长改进 支持
- 改版了? 牛叉
- 网站不错^-^ 多多向站长学习
- 212
- 啊 是
guru
为什么没意义呢?