也许您会说这样写就可以啦.

webBrowser.DocumentText = xmlDoc.OuterXml;

其实这样是错的,这样不会显示XML的结构。

本来以为可以设置webBrowser.DocumentType=”text/xml”;

无奈,WebBrowser.DocumentType是只读类型的。

查了一下资料,原来是要用System.Xml.XslCompiledTransform去格式化一下

Ok, lets’ do it.

Example Code:
     string xml=xmlDoc.OuterXml;//xmlDoc是XmlDocument类型
     XslCompiledTransform xslt = new XslCompiledTransform();
     xslt.Load("xml-pretty-print.xsl");
     TextReader tr = new StringReader(xml);
     XPathDocument xpath = new XPathDocument(tr);
     TextWriter tw = new StringWriter();
     XmlWriter xwriter = XmlWriter.Create(tw);
     xslt.Transform(xpath, xwriter);
     xmlBrowser.DocumentText = tw.ToString();//xmlBrowser是一个WebBrowser控件

参考了一下文章:

http://www.cnblogs.com/skyfei/archive/2008/04/18/1160302.html

http://www.cnblogs.com/cstded/archive/2008/01/16/1041368.html (非常详细,推荐)

http://www.biglist.com/lists/xsl-list/archives/200003/msg00769.html

其中第二篇博文提到的defualtss.xsl俺木有获取到。就用了第三篇文章的xml-pretty-print.xsl内容是一样的:)

下载:xml-pretty-print

preview

前几天在摆弄一个玩意儿,需要从服务器(使用URLLoader)读取一个XML文档,GBK编码的。
读取过来要对这个XML文档进行解析,解析是没问题的。
不过一显示就发现问题了,中文部分是乱码的。
OK,那就执行flash.systen.System.useCodepage=true吧。
trace一下
中文显示没问题。
不过很奇怪的是,传过来的XML末尾被附加上了几个莫名其妙的字符。
在 var xmlDoc:XML=new XML(event.target.data);的时候
报了”TypeError: Error #1095: XML 分析器失败: 属性未结束。”。
那我就想着把后面的那几个奇怪的字符截掉:)
就这样写
var xmlDoc: = new XML(event.target.data.substring(0, event.target.data.lastIndexOf(””) + 7).toString());
无奈,还是不行。
因为要读取的XML文件有点庞大,有将近16K。因为提示的是“XML 分析器失败: 属性未结束
所以就有点怀疑,是不是没有一次性读完。
很有意思的是,在我执行了一次
XML.ignoreWhiteSpace=true之后。
问题变得奇怪起来,时好时坏的,有时候可以正常解析,有时候又会出错。
但是更奇怪的是,我把生成的swf文件放到我的博客服务器上,却100%正常。真是无语了。莫非是我的网络有问题。
所以有点将错就错了。本地的不管了。直接放到服务器上了。。。
不过有点怀疑,这又是一个Bug~

期间参考了两篇文章,非常值得借鉴

蓝色理想上的:彻底解决乱码升级版….

*这篇帖子提到的使用URLStream,这个思路的确是之前没想到的。:)很好,很强大!

Nabble上的。
Special characters after end tag of XML document (HTTPService issue)

© 2011 达达's Blog Suffusion theme by Sayontan Sinha