如何在.Net Web浏览器控件中显示XML文档?

时间:2009-02-17 13:56:13

标签: .net wpf xml vb.net

我有一个XML文档和一个随附的CSS文件,其中包括页面格式样式(都是从Adobe Framemaker导出的)。我想导入此数据并在Windows窗体或WPF中的Web浏览器控件中显示XML文档的一部分。我不清楚如何让所有这些工作在一起。

任何建议都会有所帮助,谢谢。

4 个答案:

答案 0 :(得分:3)

我采用的方法是获取xslt转换,将原始xml格式化为浏览器的html编码内容。谷歌搜索“xml漂亮的打印”会发现你准备好了xslt转换。

使用XML控件完成剩下的工作。给它你的xslt文件和xml,它将负责转换xml。

答案 1 :(得分:3)

webBrowser1.NavigateToStream(parseXmlToHtml(report));

private Stream parseXmlToHtml(string xmlDocument)
{           
   XmlDocument dat = new XmlDocument();
   XslCompiledTransform xslt = new XslCompiledTransform();

   MemoryStream outputStream = new MemoryStream();
   XmlTextWriter writer = new XmlTextWriter (outputStream, System.Text.Encoding.ASCII);

   dat.LoadXml(xmlDocument);  // or dat.Load("c:\\dat.xml");
   xslt.Load("c:\\MonthlyLate.xslt");
   xslt.Transform(dat, writer);

   outputStream.Position = 0;

   return outputStream;
}

答案 2 :(得分:0)

要在内存中更改Nir的示例,请执行以下操作:

StringBuilder sb = new StringBuilder(2500);
XmlWriterSettings settings = new XmlWriterSettings();
XmlWriter dest = XmlWriter.Create(sb, settings);
xslt.Transform(source, dest);;
MessageBox.Show(sb.ToString());

答案 3 :(得分:-2)

您不能将CSS与CSS一起使用,只能将CSS与HTML(或XHTML)一起使用。

如果XML文件是XHTML,则需要在head元素中添加对CSS的引用:

<link href="mycss.css" type="text/css" rel="stylesheet" />

如果XML文件不是XHTML,则必须将其转换为HTML(并将链接添加到css中)。

正如kareem所说,你可以使用谷歌找到合适的XSLT代码,这里有一些代码我必须在C#中使用XSLT:

XmlDocument source = new XmlDocument();
source.Load(xmlFilePath);
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load(xsltFilePath));
XmlWriterSettings settings = new XmlWriterSettings();
XmlWriter dest = XmlWriter.Create(htmlFilePath, settings);
xslt.Transform(source, dest);
dest.Flush();
dest.Dispose();

您可以在网络浏览器控件中的“htmlFilePath”处打开文件。