我真正需要的是在组件中显示XML。到目前为止,我已经使用webbrowser组件来显示我的XML数据,这里是代码:
//XDocument loaded_xml = new XDocument();
var stream = new MemoryStream();
loaded_xml.Save(stream);
stream.Position = 0;
WebBrowser1.DocumentStream = stream;
问题是它不会在我的webbrowser中呈现xml,但是当我右键单击它并查看源代码时,xml内容就在那里!!
最后,如果有任何其他组件在其中显示XML,我将很高兴得知:) 提前谢谢......
答案 0 :(得分:1)
关于使用IE使用的默认XSL,有一个解释here。
这是从该文章中复制粘贴的,因为您似乎无法访问它。 归功于作者:
Internet Explorer以相当不错的方式显示XML。今天我想我会使用相同的引擎在.NET 2.0应用程序中显示XML。所以我将一个WebBrowser控件放到一个表单上,并将我的XML字符串分配给DocumentText属性。瞧?当然不是。
经过一番挖掘,我发现IE使用内置的XSLT转换在浏览器中将XML呈现为HTML。有问题的样式表可以从IE中的以下uri获得:res://msxml.dll/defaultss.xsl。那么,那么可以保存这个字符串,并在.NET中使用它?不完全的。事实证明,IE使用的XSL与.NET的XslCompiledTransform类不兼容。 D'哦!
经过一番挖掘后,事实证明Steve Muench已经完成了.NET所需的XSLT 1.0 REC的转换。谢啦!该文件可以在这里下载。
我将以下代码添加到我的WebBrowser基类中,以允许开发人员通过设置属性来显示XML:
public XmlDocument DocumentXml
{
set
{
Stream s = <defaultss.xsl from embedded resource file>
XmlReader xr = XmlReader.Create(s);
XslCompiledTransform xct = new XslCompiledTransform();
xct.Load(xr);
StringBuilder sb = new StringBuilder();
XmlWriter xw = XmlWriter.Create(sb);
xct.Transform(value, xw);
this.DocumentText = sb.ToString();
}
}