Я бы не использовал XmlWriter.
Я бы использовал XSLT. Если файл XML должен отображаться сам по себе, просто вставьте PI-таблицу стилей в XML: <?xml-stylesheet type="text/xsl" href="RawXmlAsHtml.xslt"?>
. Но поскольку IE делает это автоматически, я предполагаю, что ваша цель - не отображать XML на своей странице.
Скорее всего, «сырой» xml будет отображаться как часть другой HTML-страницы. В этом случае я использую XSL-преобразование на стороне сервера для создания HTML из XML, а затем вставляю выходные данные в элемент управления <asp:xml>
. Как это:
var doc= new System.Xml.XmlDocument();
doc.Load(xmlFile);
var xsl= new System.Xml.Xsl.XslTransform();
xsl.Load(Server.MapPath("RawXmlAsHtml.xslt"));
xml1.Document = doc;
xml1.Transform = xsl;
И разметка:
<asp:xml id="xml1" runat="server" />
Остается вопрос: какой XSLT вы можете использовать?
IE, начиная с MSXML3, включил таблицу стилей для форматирования "сырого" xml. Иногда он доступен через res: //msxml3.dll/defaultss.xsl. Но это не стандартная таблица стилей XSLT; он использует специфичный для Microsoft формат WD-xsl. Это может быть не то, что вы хотите.
Я посмотрел и нашел что-то, соответствующее стандарту XSLT; производится Олегом Ткаченко и поставляется как часть его веб-элемента управления eXml . Он доступен под лицензией в стиле BSD. (Вы могли бы даже хотеть весь элемент управления exml - я не знаю, что это.)
Используя этот XSLT и приведенный выше код, дисплей выглядит следующим образом:
альтернативный текст http://i42.tinypic.com/16a5tep.jpg
Это не совсем идеально, потому что эта таблица стилей генерирует полную HTML-страницу с тегами <HTML>
и <HEAD>
и т. Д. Вы действительно просто хотите фрагмент Но вы должны быть в состоянии настроить его довольно легко, и в любом случае, он отображается правильно для меня, без изменений.
Редактировать : в связи с упомянутой проблемой: я изменил таблицу стилей, чтобы не вставлять теги <HTML>
и <HEAD>
Работает отлично.