【问题标题】:How to open a dynamically created a xml data in Internet Explorer?如何在 Internet Explorer 中打开动态创建的 xml 数据?
【发布时间】:2015-01-18 09:17:36
【问题描述】:

我读取了 XML 文件:

string strFileName = @"D:\BigFile.xml";
XmlDocument xDoc = new XmlDocument();
xDoc.Load(strFileName);

我在这个 xml 文件中插入了一个 xml 节点:

XmlNode xElt = xDoc.SelectSingleNode("pagina");
XmlElement xNewChild = xDoc.CreateElement("postPaginaXMLXMLXMLXMLXMLXMLXMLXML");
xDoc.DocumentElement.InsertBefore(xNewChild, xElt);

但是,我无法在 Internet Explorer 中打开此 xDoc。我可以打开一个创建的文件:

Process proc = new Process();
proc.StartInfo.UseShellExecute = true;
proc.StartInfo.FileName = strFileName;
proc.Start();

但是,此代码通过地址(strFileName)打开一个真实的 xml 文件。 如何在 Internet Explorer 中打开动态创建的 xml 文件而不在 HDD 上保存/创建此文件?

【问题讨论】:

  • 到底是什么问题? I couldn't opend this xDoc in Internet ExplorerHow to open a dynamically created xml file in Internet Explorer without saving/creating this file。关于后者,IE是一个浏览器。它可以从您的硬盘打开文件,但它也可以通过 HTTP 加载文件。我认为您不是在编写某种网络服务器。您是否希望以某种方式与 IE 及其加载的内容进行交互?
  • @Sjips,我无法在 Internet Explorer 中打开这个 xDoc

标签: c# .net xml wpf internet-explorer


【解决方案1】:

这是一个类似问题的答案...。代码本质上是下载一个 XML 文件,通过应用 xsl 样式表 (Layout\Main.xsl)(您可能不想要)将 XML 转换为 HTML,然后显示结果WebBrowser 控件中的 HTML.... 它是 VB.NET,但很简单,可以转换为 C#


您可以使用 WebClient 下载 XML .....类似这样(将 url 替换为您的实际 url)

Dim xml = New WebClient().DownloadString(url)

现在,如果您想在 WebBrowser 中显示 XML,您可以使用 MemoryStream 和 *.xsl 文件完成所有这些操作,根本不需要将 XML 保存到 HD....

使用 WebBrowser1.DocumentStream 属性,您可以通过将 xsl 样式表应用于 XML 来创建 HTML MemoryStream。这是一个示例函数....

Friend Function CreateHTMLStream(xml As String, xslPath As String) As MemoryStream
Dim HTMLTransformStream As New MemoryStream
Dim HTMLTransformWriter As New XmlTextWriter(HTMLTransformStream, System.Text.Encoding.ASCII)

'Dim XMLTransformStream As New MemoryStream
Dim XMLTransformReader As New XmlTextReader(New StringReader(xml))

Dim xsltrans = New XslCompiledTransform()
xsltrans.Load(xslPath)
xsltrans.Transform(XMLTransformReader, Nothing, HTMLTransformWriter)
HTMLTransformStream.Position = 0
Return HTMLTransformStream
End Function

该函数接受一个 XML 字符串(与 WebClient 一起下载)和 XSL 样式表的路径,它将 HTML 作为 MemoryStream 转换并返回......所以你可以像这样调用那个函数......

WebBrowser1.DocumentStream = CreateHTMLStream(WebClient().DownloadString(url), "Layout\Main.xsl")

这可能会给你一些想法......我没有测试过代码,所以你可能不得不玩它......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-19
    • 1970-01-01
    • 1970-01-01
    • 2019-02-16
    • 1970-01-01
    • 1970-01-01
    • 2019-08-22
    • 1970-01-01
    相关资源
    最近更新 更多