2 votes

Comment retourner Xml avec déclaration en utilisant un ActionResult dans ASP.NET MVC?

Je ne peux pas attacher une déclaration xml tout en retournant du xml en utilisant ActionResult. Je le vois inclus pendant le débogage jusqu'à la ligne à laquelle il retourne du xml dans le code ci-dessous mais ne s'affiche pas sur le web.

Ce que je fais actuellement:

  1. Obtenir du Xml depuis Sql Server en utilisant XML PATH.
  2. Retourner une chaîne xml en utilisant XML Reader:

    public XmlDocumentResult XmlData()
    {
        String s = "" + "\n" +  this.GetData();
        byte[] encodedString = Encoding.UTF8.GetBytes(s);
        MemoryStream ms = new MemoryStream(encodedString);
        ms.Flush();
        ms.Position = 0;
        XmlDocument doc = new XmlDocument();
        doc.Load(ms);           
        return new XmlDocumentResult { XmlDocument = doc };
    }
    
    public class XmlDocumentResult : ContentResult
     {
         public XmlDocument XmlDocument { get; set; }
    
         public override void ExecuteResult(ControllerContext context)
         {
             if (XmlDocument == null)
                 return;
    
             Content = XmlDocument.OuterXml;
             ContentType = "text/xml";
             base.ExecuteResult(context);
         }
     }

J'ai essayé les extraits de code suivants de Stackoverflow:

XmlDeclaration xmldecl;
xmldecl = xmlDocument.CreateXmlDeclaration("1.0", "UTF-8", null);
XmlElement root = xmlDocument.DocumentElement;
xmlDocument.InsertBefore(xmldecl, root);

XmlNode docNode = xml.CreateXmlDeclaration("1.0", "UTF-8", null);
xml.AppendChild(docNode);

2voto

GoldenAge Points 1837

Peut-être essayer ceci:

public IActionResult Index()
{
    // vous devez convertir votre xml en chaîne
    var xmlString = "contenu xml..";
    return this.Content(xmlString, "text/xml");
}

Voir https://docs.microsoft.com/en-us/previous-versions/aspnet/web-frameworks/dd492713%28v%3dvs.100%29

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X