сгенерировать XML-файл и отобразить его в XML-формате

Посмотрел учебник, но не смог заставить это работать:

default.aspx:

<%@ Page Language="C#" ContentType="text/xml" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="rssPubba.Default" %>

default.aspx.cs

 protected void Page_Load(object sender, EventArgs e)
    {
        Response.ContentType = "text/xml";
        Response.ContentEncoding = Encoding.UTF8;

        XmlDocument doc = new XmlDocument();

        // XML declaration
        XmlNode declaration = doc.CreateNode(XmlNodeType.XmlDeclaration, null, null);
        doc.AppendChild(declaration);

        // Root element: article
        XmlElement root = doc.CreateElement("article");
        doc.AppendChild(root);

        // Sub-element: author
        XmlElement author = doc.CreateElement("author");
        author.InnerText = "Faisal Khan";
        root.AppendChild(author);

        // Attribute: isadmin
        XmlAttribute isadmin = doc.CreateAttribute("isadmin");
        isadmin.Value = "true";
        author.Attributes.Append(isadmin);

        // Sub-element: title
        XmlElement title = doc.CreateElement("title");
        title.InnerText = "Sample XML Document";
        root.AppendChild(title);

        // Sub-element: body (CDATA)
        XmlElement body = doc.CreateElement("body");
        XmlNode cdata = doc.CreateCDataSection("This is the body of the article.");
        body.AppendChild(cdata);
        root.AppendChild(body);

        doc.Save(Response.OutputStream);
    }

однако, когда я пытаюсь отобразить его, браузер, похоже, интерпретирует его как разметку:

выход:

<article> 
  <author isadmin="true">Faisal Khan</author> 
  <title>Sample XML Document</title> 
  <body><![CDATA[This is the body of the article.]]></body> 
</article>

Какие изменения мне нужно внести?


person Mikael    schedule 15.09.2010    source источник


Ответы (1)


Я подозреваю, что пока он очищает вывод и записывает обычные данные страницы. Два варианта:

  • Используйте ashx вместо aspx для создания обработчика, чтобы он знал, что вы не пытаетесь отобразить страницу. Это, вероятно, самый разумный подход, если он всегда предназначен для создания XML-документа.
  • Завершите запрос, когда вы записали данные, например. вызвав Response.CompleteRequest()

(Я бы также рекомендовал использовать LINQ to XML как более удобный API для создания XML-документов, чем старый API DOM, но решать вам :)

person Jon Skeet    schedule 15.09.2010
comment
Сейчас я использую LINQ to XML, Response.End(); и файл ashx, и это работает! Спасибо - person Mikael; 15.09.2010
comment
Можно ли использовать Запрос. строка город = Запрос.QueryString[город]; внутри эшкс? - person Mikael; 15.09.2010