Как отобразить XML для чтения человеком на странице просмотра asp.net MVC - PullRequest
3 голосов
/ 06 февраля 2012

У меня есть строка на странице сведений 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: basic linq-to-xml (я не очень хорош в этом)

РЕДАКТИРОВАТЬ: я отображаю строку следующим образом и мне было интересно, если это может иметь какое-то отношение к этому:

<%: *formatted string goes here* %>

Ответы [ 5 ]

6 голосов
/ 06 февраля 2012

Я делал это так:

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

3 голосов
/ 06 февраля 2012

Проблема в том, что вы выводите текст, который затем будет интерпретироваться браузером по умолчанию, как текст обрабатывается - он не знает, что это XML.

Вам нужна библиотека, чтобы правильноотформатируйте текст, используя стандартные правила XML.

Вы можете попробовать Google Prettify - библиотеку Javascript для форматирования кода (она поддерживает XML и многие другие языки программирования).Существует также средство форматирования на основе .NET, которое вы могли бы использовать, я думаю, оно было написано в Stack Overflow и с открытым исходным кодом, но я не могу найти его прямо сейчас.

1 голос
/ 06 февраля 2012

Все ваши проблемы из-за того, что все браузеры усекают пробелы в xml.
Попробуйте использовать &nbsp; для рисования намерений или просто добавьте объявление xml в начало страницы:

<?xml version="1.0" ?>
<this>
  <is sample = "attribute">
    <xml>
       <power> !!! </power>
    </xml>
    <oh>
       <yeah>
       </yeah>
    <oh>
  </is>
</this>

Все современные браузеры справятся с этим правильно.

0 голосов
/ 15 мая 2018

из 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):

<code><pre>
0 голосов
/ 06 февраля 2012

попробуйте установить тип содержимого xml и добавить заголовок xml перед вашими данными. Я использую эту простую функцию подготовки для своих веб-сервисов, r - это объект Response:

public void prepXml()
{
    r.AddHeader("Content-Type", "text/xml");
    r.Write("<?xml version=" + '"' + "1.0" + '"' + " encoding=" + '"' + "utf-8" + '"' + " ?>");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...