【问题标题】:How do I display an XML document in a .Net web browser control?如何在 .Net Web 浏览器控件中显示 XML 文档?
【发布时间】:2009-02-17 13:56:13
【问题描述】:

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

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

【问题讨论】:

    标签: .net wpf xml vb.net


    【解决方案1】:

    我采用的方法是获取一个 xslt 翻译,它将原始 xml 格式化为浏览器的 html 编码内容。谷歌搜索“xml pretty print”会发现一个 xslt 转换已准备就绪。

    使用 XML 控件完成其余的工作。给它你的 xslt 文件和 xml,它会负责转换 xml。

    【讨论】:

    • 谷歌搜索“xml pretty print”会发现你准备好了一个xslt转换我的google-fu一定很弱。搜索它让我发现了一些奇怪的 Perl 和 Java 代码 sn-ps,它们显示“漂亮”的 XML,但不是 HTML 编码的 XML。您可能有更具体的链接吗?谢谢。
    【解决方案2】:
    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;
    }
    

    【讨论】:

      【解决方案3】:

      要在内存中执行此操作,请将 Nir ​​示例的结尾更改为执行以下操作:

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

      【讨论】:

        【解决方案4】:

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

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

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

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

        正如 kareem 所说,您可以使用 google 找到合适的 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();
        

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

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-19
        • 1970-01-01
        • 1970-01-01
        • 2013-11-17
        • 2012-02-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多