======================================================
注:本文源代码点此下载
======================================================
随笔- 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楼 回复 引用 查看
那么,使用xml + xslt 输出成word2003格式的解决方案方法您是否知道哪里有链接,请给出一下,谢谢。
最近有一个项目要用到,谢谢!~
#2楼[楼主] 回复 引用 查看
不好意思,没有亲自做过到 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楼 回复 引用 查看
这是一个老问题,我的解决方案是用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
» 更多新闻...
最新知识库文章:
======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/