我在数据库字段中有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>");谢谢你对我的照顾!
发布于 2009-09-08 21:29:48
WriteRaw只是将输入原封不动地写入底层流。
如果要使用内置格式,首先需要解析XML,然后将其转换回字符串。
最简单的解决方案可能是使用XLinq:
var xml = XDocument.Parse(auditLog.ObjectChanges);
Response.Write(Server.HtmlEncode(xml.ToString(SaveOptions.None)));(这里假设auditLog.ObjectChanges是一个表示格式良好的XML的字符串。)
如果您需要对格式进行更多的控制(缩进、换行符),请将XDocument保存到支持MemoryStream的XmlWriter中,将MemoryStream解码回一个字符串,然后编写字符串HtmlEncoded。
发布于 2009-09-08 21:31:25
如果auditLog.ObjectChanges是需要格式化的内容,那么您已经以一种未格式化的方式存储了它。要对其进行格式化,请将其视为XML并将其写入XMLWriter进行格式化。然后使用HTML编码将格式化的XML包含到响应中。
https://stackoverflow.com/questions/1396408
复制相似问题