我有一个XML文档和一个随附的CSS文件,其中包括页面格式样式(都是从Adobe Framemaker导出的)。我想导入此数据并在Windows窗体或WPF中的Web浏览器控件中显示XML文档的一部分。我不清楚如何让所有这些工作在一起。
任何建议都会有所帮助,谢谢。
答案 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”处打开文件。