如何在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* %>

如何在asp.net mvc视图页面中显示人类可读的xml

我是这样做的:

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中的空格
尝试使用&nbsp;来绘制意图,或者简单地将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" + '"' + " ?>");
}