У меня есть XML в XmlDocument, и я хочу отобразить его на странице ASP.NET. (XML должен быть в элементе управления; страница будет иметь другое содержимое.) Прямо сейчас мы используем для этого элемент управления Xml. Проблема в том, что XML отображается без отступов. Уродливый.
Похоже, я должен создать для него XSLT, но это кажется скучным. Я бы предпочел просто передать его в элемент управления, чтобы он автоматически анализировал XML и правильно делал отступ. Есть простой способ сделать это?
Как часть страницы с другим контентом. (Отредактировано для пояснения.)





Быстрый (и грязный) способ сделать это - использовать IFrame.
По правде говоря, XSLT - это «идеальный» способ форматирования XML для отображения. Другой вариант - разобрать его вручную для отображения.
Чтобы использовать iframe: Сторона ASPX:
< iframe runat = "server" id = "myXMLFrame" src = "~/MyXmlFile.xml" /></pre>
Сторона кода:
myXMLFrame.src = Page.ResolveClientUrl("~/MyXmlFile.xml")
Можете быть более конкретными? Мне не ясно, что мне нужно сделать в коде, чтобы заполнить iframe.
Как я могу это сделать, если XML находится в строке, а не в файле? (Предположительно, есть способ избежать записи временного файла.)
Один из способов - перенаправить IFrame на вашу страницу, передать ему строковую переменную запроса, чтобы сообщить ему о выводе XML (через response.write), а затем изменить тип содержимого страницы на XML и, наконец, вызвать response.end чтобы вы не продолжали жизненный цикл страницы
Вы можете попробовать использовать XmlWriter / XmlTextWriter, установить свойство Indentation писателя, записать в StringBuilder или MemoryStream и вывести результат внутри тега <pre>
<pre>, вот чего мне не хватало. Спасибо. После публикации я нашел здесь образец кода для создания форматированного XML: форумы.asp.net/t/1145533.aspx
Вы можете найти слегка измененную версию XSLT, которую IE использует для преобразования XML в HTML при просмотре в IE по адресу http://www.dpawson.co.uk/xsl/sect4/N10301.html#d15977e117.
Я использовал его в элементе управления WebBrowser в приложении WinForms, и он отлично работает. Однако я не тестировал его в FireFox / Chrome / Safari / Operat.
Вы хотите отображать его как часть страницы с другим содержимым или просто выдавать XML, который браузер может обработать?