首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将xml文档写成格式良好的asp.net响应?

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

Stack Overflow用户
提问于 2009-09-08 21:23:18
回答 2查看 5.6K关注 0票数 1

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

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

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

我有大约99.9977%的把握我没有正确地使用XmlWriter。我现在正在做的事情可以通过直接写到响应中来完成。但至少我是在正确的轨道上?:)

代码语言:javascript
复制
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的答案:

代码语言:javascript
复制
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>");

谢谢你对我的照顾!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-09-08 21:29:48

WriteRaw只是将输入原封不动地写入底层流。

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

最简单的解决方案可能是使用XLinq:

代码语言:javascript
复制
var xml = XDocument.Parse(auditLog.ObjectChanges);

Response.Write(Server.HtmlEncode(xml.ToString(SaveOptions.None)));

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

如果您需要对格式进行更多的控制(缩进、换行符),请将XDocument保存到支持MemoryStream的XmlWriter中,将MemoryStream解码回一个字符串,然后编写字符串HtmlEncoded。

票数 4
EN

Stack Overflow用户

发布于 2009-09-08 21:31:25

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1396408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档