C# 处理XML + XSLT转换中HTML元素的输出问题及解决
来源:互联网 发布:台湾灵异知乎 编辑:程序博客网 时间:2024/05/30 04:29
======================================================
注:本文源代码点此下载
======================================================
随笔- 12
文章- 16
评论- 24
博客园首页新随笔新文章联系管理订阅
c# 处理xml + xslt转换中html元素的输出问题及解决
最近同事手里的一个项目需要用 xslt + xml 输出 microsoft word 格式的 doc文件。考虑到客户机器上安装的不一定是支持 wordml 的 office 2003, 所以xslt + xml输出 wordml 的方案被剔除。此外商业的转换组件价格不菲,似乎也不行。还有就是转换成 rtf 格式,看上去也不容易。因为要输出的东西很简单,只有几个表格和文字,没有复杂的东西,最后采用了 xslt + xml 输出 html 文件的方法,html 改扩展名为 doc,用 word 打开,没有问题,看来这个办法是可行的。
xml 数据里面包含了
这个 html 元素, 但是用 c# 进行 xslttransform 死活就是输出不了
。奇怪的是ie 直接浏览 xml 文件和 javascript 调用 msxml 得到的转换结果却是正常的 -
可以正常的显示出来。文件是这样写的(部分)
xml:
root>
a>aaaaaa
bbbbbb
cccccc]]>a>
root>
xslt:
xsl:value-of disable-output-escaping="yes" select="/root/a"/>
javascript
var xml = new activexobject("msxml2.domdocument.4.0");
xml.load("a.xml");
var xslt = new activexobject("msxml2.domdocument.4.0");
xslt.load("a.xslt");
document.write(xml.transformnode(xslt));
c#
xsltransform xslt = new xsltransform();
xmldocument xml = new xmldocument();
xslt.load("a.xslt");
xml.load(("a.xml"));
using (xmltextwriter writer = new xmltextwriter("a.doc", encoding.default))
{
xslt.transform(xml, null, writer, null);
writer.close();
}
就是上面的这些代码,用浏览器直接看 xml 文件和 javascript 都是正常的输出的结果,就像事先设想的那样:
aaaaaa
bbbbbb
cccccc
但是 c# 那个版本的就是输出不了
, 结果是这样的:
aaaaaabbbbbbcccccc
google 半天找到原来是这样样子的 xmlwriter xmlreader 将忽略 xslt 中的 disable-output-escaping 这个选项(详情参考http://www.dotnet247.com/247reference/msgs/28/142194.aspx)。将上述 c# 代码中的 xmltextwriter 换成 filestream 一切搞定。
system.io.stream strmtemp = new system.io.filestream("a.doc", system.io.filemode.create, system.io.fileaccess.readwrite);
绿色通道:好文要顶关注我收藏该文与我联系
posted on 2004-11-25 14:23一切由.net开始 阅读(3660) 评论(6)编辑 收藏
评论
344152
#1楼 回复 引用 查看
笑望人生| 2004-11-25 17:10
那么,使用xml + xslt 输出成word2003格式的解决方案方法您是否知道哪里有链接,请给出一下,谢谢。
最近有一个项目要用到,谢谢!~
#2楼[楼主] 回复 引用 查看
一切由.net开始| 2004-11-25 21:07
不好意思,没有亲自做过到 wordml 的转换,但是有一些链接希望有用
http://www.tkachenko.com/blog/archives/000024.html
http://msdn.microsoft.com/library/en-us/fabrikam/html/odc_oftechnical_manual_creation_solution_wordmltransform.asp
http://www.microsoft.com/downloads/details.aspx?familyid=fe118952-3547-420a-a412-00a2662442d9&displaylang=en
http://fo2wordml.sourceforge.net/
#3楼 回复 引用 查看
coding cow| 2004-11-26 11:52
这是一个老问题,我的解决方案是用system.web.ui.htmltextwriter替代xmltextwriter.
#4楼 回复 引用
firn[未注册用户] | 2006-03-06 18:29
大哥,帮了大忙了。谢谢你
注册用户登录后才能发表评论,请 登录 或 注册,返回博客园首页。
首页博问闪存新闻园子招聘知识库
最新it新闻:
·ios 5.1 beta3文件预示未来 siri有可能支持 ipad和 ipod touch
·android平台12月广告浏览份额51.6% 超越ios
·测试版ios源代码显示ipad 3或将支持siri
·斯蒂芬·霍金的新电脑
·京东商城2.95亿竞得北京商业地一块
» 更多新闻...
最新知识库文章:
·javascript 面向对象编程
·持续集成之“everything is code”
·持续集成之“软件自我识别”
·持续集成之戏说check-in dance
·什么是闭包。
我的理解
» 更多知识库文章...
china-pub 2011秋季教材巡展
china-pub 计算机绝版图书按需印刷服务
======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
- C# 处理XML + XSLT转换中HTML元素的输出问题及解决
- xslt转换为html中空格处理
- 终于解决body元素居中问题(xslt+xml->html,终极解决方案)
- Jsp结合XML+XSLT将输出转换为Html格式
- Jsp结合XML+XSLT将输出转换为Html格式
- Jsp结合XML+XSLT将输出转换为Html格式
- JSP结合XML+XSLT将输出转换HTML
- Jsp结合XML+XSLT将输出转换为Html格式
- JSP结合XML+XSLT将输出转换HTML
- JSP结合XML+XSLT将输出转换HTML
- JSP结合XML+XSLT将输出转换HTML
- jsp结合xml+xslt将输出转换html
- Jsp结合XML+XSLT将输出转换为Html格式
- Jsp结合XML+XSLT将输出转换为Html格式
- XSLT转换出HTML空元素闭合问题
- c#使用XSLT将xml文档转换为html文档
- XSLT转换XML时的中文问题
- .NET转换xslt xml 时某些元素包含xmlns=""的问题
- 用Delphi开发视频聊天软件
- Java序列化机制和原理
- javascript 闭包
- 网站优化之Ajax优化及相关工具
- 为Expression Web 4 添加HTML5 标签支持
- C# 处理XML + XSLT转换中HTML元素的输出问题及解决
- 今天用AJAX实现了一个WEBIM,大家看下,请指教
- java中只有传值
- 最简单的Delphi程序(Windows)
- java 面试题
- 实现 Java 多线程并发控制框架--转载
- 黄聪:一些文件上传组件(Flash,JQuery,asp,php,js,AJAX)
- Delphi如何使用基本的绘图函数绘制统计图
- 一起谈.NET技术,Silverlight面向客户端,HTML5面向Web