代码之家  ›  专栏  ›  技术社区  ›  Christopher

如何将xml文档写入格式良好的asp.net响应?

  •  1
  • Christopher  · 技术社区  · 16 年前

    我在数据库字段中有xml文档。xml文档在元素之间没有空格(没有换行,没有缩进)。

    我想把它们输出到浏览器,格式很好。我只是想在那里有一些缩进换行。有没有一种简单的、最好是内置的方法可以做到这一点?

    我正在使用ASP.NET 3.5和C#。这是我到目前为止所拥有的,它在一行中输出文档:

    我大约99.9977%确定我没有正确使用XmlWriter。我现在正在完成的事情可以通过直接给回复写信来完成。但至少我在正确的轨道上吗?:)

    int id = Convert.ToInt32(Request.QueryString["id"]);
    var auditLog = webController.DB.Manager.AuditLog.GetByKey(id);
    
    var xmlWriterSettings = new XmlWriterSettings();
    xmlWriterSettings.Indent = true;
    xmlWriterSettings.OmitXmlDeclaration = true;
    
    var xmlWriter = XmlWriter.Create(Response.OutputStream, xmlWriterSettings);
    if (xmlWriter != null)
    {
        Response.Write("<pre>");
        // ObjectChanges is a string property that contains an XML document
        xmlWriter.WriteRaw(Server.HtmlEncode(auditLog.ObjectChanges));
        xmlWriter.Flush();
        Response.Write("</pre>");
    }
    

    这是工作代码,基于dtb的回答:

    int id = Convert.ToInt32(Request.QueryString["id"]);
    var auditLog = webController.DB.Manager.AuditLog.GetByKey(id);
    
    var xml = XDocument.Parse(auditLog.ObjectChanges, LoadOptions.None);
    Response.Write("<pre>" + Server.HtmlEncode(xml.ToString(SaveOptions.None)) + "</pre>");
    

    谢谢你帮助我!

    2 回复  |  直到 16 年前
        1
  •  4
  •   dtb    16 年前

    WriteRaw 只需将未更改的输入写入底层流。

    如果要使用内置格式,首先需要解析XML,然后将其转换回字符串。

    var xml = XDocument.Parse(auditLog.ObjectChanges);
    
    Response.Write(Server.HtmlEncode(xml.ToString(SaveOptions.None)));
    

    (这假设 auditLog.ObjectChanges 是表示格式良好的XML的字符串。)

        2
  •  0
  •   Wim ten Brink    16 年前

    如果auditLog.ObjectChanges是需要格式化的XML内容,那么您已经以未格式化的方式存储了它。要对其进行格式化,请将其视为XML并将其写入XMLWriter进行格式化。然后使用HTML编码将格式化的XML包含到响应中。

    推荐文章