如何在asp.net mvc视图页面中显示人类可读的xml
本文关键字:人类 显示 xml asp net 视图 mvc | 更新日期: 2023-09-27 18:23:44
我在ASP.NET MVC详细信息页面中有一个字符串,其值为
<this><is sample = "attribute"><xml><power>!!!</power></xml><oh><yeah></yeah></oh></is></this>.
我希望它显示如下:
<this>
<is sample = "attribute">
<xml>
<power> !!! </power>
</xml>
<oh>
<yeah>
</yeah>
<oh>
</is>
</this>
我尝试过的东西:
1:如何显示格式化的XML-最佳答案和richards答案
2:xmlwriter.writeraw();
3:基本的linq到xml(我不太擅长这个)
编辑:我显示字符串如下,想知道这是否与有关
<%: *formatted string goes here* %>
我是这样做的:
protected string FormatXml(XmlNode xmlNode)
{
StringBuilder builder = new StringBuilder();
// We will use stringWriter to push the formated xml into our StringBuilder bob.
using (StringWriter stringWriter = new StringWriter(builder))
{
// We will use the Formatting of our xmlTextWriter to provide our indentation.
using (XmlTextWriter xmlTextWriter = new XmlTextWriter(stringWriter))
{
xmlTextWriter.Formatting = Formatting.Indented;
xmlNode.WriteTo(xmlTextWriter);
}
}
return builder.ToString();
}
http://forums.asp.net/t/1145533.aspx/1
问题是您正在输出文本,然后浏览器将以默认的文本处理方式对其进行解释——它不知道它是XML。
您需要的是一个使用标准XML规则正确格式化文本的库。
您可以尝试GooglePretify,这是一个用于格式化代码的Javascript库(它支持XML以及许多其他编程语言)。还有一个基于.NET的格式化程序可以使用,我认为它是由Stack Overflow编写的,并且是开源的,但我现在找不到它。
所有的问题都是因为所有浏览器都在截断xml中的空格
尝试使用
来绘制意图,或者简单地将xml的声明添加到页面的开头:
<?xml version="1.0" ?>
<this>
<is sample = "attribute">
<xml>
<power> !!! </power>
</xml>
<oh>
<yeah>
</yeah>
<oh>
</is>
</this>
所有现代浏览器都能正确处理这一问题。
来自https://stackoverflow.com/a/16605336/1874,这里有一个简单的三线解决方案:
var xml = "<root><A><B>0</B><C>0</C></A><D><E>0</E></D></root>";
XDocument doc = XDocument.Parse(xml);
Console.WriteLine (doc.ToString());
或作为联机
XDocument.Parse(xmlstring).ToString()
将结果放入(例如,检查此StackOverflow页面上的代码块):
<pre></pre>
尝试将内容类型设置为xml,并在数据之前添加xml标头,我为我的Web服务使用这个简单的prep函数,r是响应对象:
public void prepXml()
{
r.AddHeader("Content-Type", "text/xml");
r.Write("<?xml version=" + '"' + "1.0" + '"' + " encoding=" + '"' + "utf-8" + '"' + " ?>");
}