【问题标题】:How to display XML data in a web browser?如何在 Web 浏览器中显示 XML 数据?
【发布时间】:2017-08-09 09:55:16
【问题描述】:

我正在从数据库中获取数据。其中一个字段包含 XML 格式的请求数据。我没有在列中显示它,而是在该单元格内放置了一个按钮,单击该按钮时,我希望将 XML 数据加载到浏览器中。 如何做到这一点? 我知道如何从 XML 文件在浏览器中加载数据,如果它被放置在本地,但是如何在浏览器或 弹出窗口 中显示它,而不是在按钮单击时显示它,如果我得到它查询结果?

点击查看 XML 后,它应该在网络浏览器中显示 XML 数据。

为了从文件中显示它,我使用了这个

<asp:Button ID="btnViewXML" class="btn btn-warning btn-xs" runat="server" 
                    Text="View XML" OnClick="ViewXML" />

protected void ViewXML(object sender, EventArgs e)
    {
        Response.Clear();
        Response.Buffer = true;
        Response.Charset = "";
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        Response.ContentType = "application/xml";
        Response.WriteFile(Server.MapPath("~/requestData.xml"));
        Response.Flush();
        Response.End();
    }

【问题讨论】:

    标签: c# asp.net xml data-binding web-applications


    【解决方案1】:

    当您说request data in XML format 时,您是指来自数据库字段的 xml 内容,还是 xml 中的当前 http 请求?

    我假设第一个,即它是一个数据库字段。

    view xml 按钮上,传入行唯一ID,然后在回发时从数据库中获取xml,然后将其写入响应。

    类似:

    // pass in the row id in command argument
    
    <asp:Button ID="btnViewXML" class="btn btn-warning btn-xs" runat="server" 
                        Text="View XML"  CommandArgument='<%= row.Id %>' OnCommand="ViewXML" />
    
    
    protected void ViewXML(object sender, CommandEventArgs e)
    {
        // id of row
        string id =e.CommandArgument.ToString();
        // fetch from db to get your xml content
        string xmlContent = ...;
    
    
        Response.Clear();
        Response.Buffer = true;
        Response.Charset = "";
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        Response.ContentType = "application/xml";
        Response.Write(xmlContent);
        Response.Flush();
        Response.End();
    }
    

    如果我的假设是错误的,那么您将不得不将您的 http 请求存储在某个地方,以便在回发时可以检索它。无论哪种方式,逻辑都几乎相同,只是获取 xml 内容的位置不同。


    使用popup的进一步解释

    网络上有很多不同的弹出窗口小部件

    我以 jquery ui 为例,您可以使用其他逻辑大致相同的弹出窗口小部件

    在编写弹出窗口之前,要考虑的一件事是您如何传递数据(在您的情况下为 xml 结果)。

    有两种方法:

    1. 首次请求时将您的内容保存在页面上的某个位置
    2. 只有点击按钮时才使用ajax加载

    我将以第一种方式为例

    在您的页面上,创建一个 div 来保存您的弹出内容并使用对话框初始化它而不打开,并创建一个显示弹出窗口的函数

    <script>
    $(function() {
    
        $('#dialog').dialog({
            autoOpen: false        
        });
    }
    
    function showPopup(content){
        $('#dialog').text(content);
        $('#dialog').dialog("open");
    }
    </script>
    
    <div id="dialog" title="Xml Result">
    </div>
    

    然后在渲染按钮时,添加一个客户端按钮单击以触发弹出窗口

    <asp:Button ID="btnViewXML" class="btn btn-warning btn-xs" runat="server" 
                        Text="View XML"  onclientclick="showPopup('<%: row.XmlResult%>')"/>
    

    取决于结果数据的大小和用户点击查看 xml 结果的机会,使用 ajax 可能会提供更好的性能

    【讨论】:

    • 非常感谢,它工作得很好。你能指导我如何在同一页面的弹出窗口中打开它吗?像消息框等?
    • @Nizami 我已经修改了答案以包含一些有关使用弹出窗口的示例。如果您对该主题有更多问题,请打开新问题。 SO 更像是一个 QA 网站,而不是论坛,所以一个问题应该只关注一件事(因此我在技术上所做的在 SO 中并不是一个好的做法)
    猜你喜欢
    • 1970-01-01
    • 2011-12-23
    • 1970-01-01
    • 2022-08-06
    • 1970-01-01
    • 1970-01-01
    • 2019-12-31
    • 1970-01-01
    • 2015-12-04
    相关资源
    最近更新 更多