如何在XElement.ToString()中包含声明

本文关键字:包含 声明 ToString XElement | 更新日期: 2023-09-27 18:19:04

我正试图为我的web服务编写XML响应,但是我不知道如何使声明出现在响应中。

我的代码是这样的:

StringBuilder sBuilder = new StringBuilder();
using (XmlWriter writer = XmlWriter.Create(sBuilder))
{
    writer.WriteStartDocument();
    writer.WriteStartElement("ReportResponse");
    Response.WriteXml(writer);
    writer.WriteEndElement();
    writer.WriteEndDocument();
}
var response = XElement.Parse(sBuilder.ToString());
return response;

Response只是用于存储响应数据的POCO。

我知道Save方法包含声明,而ToString()方法没有。我需要用ToString()写我的申报单。

我真的只想从我的REST服务返回自定义XML,而不需要转换我的字符串100次以返回有效的XML。这是可能的吗?还是我只是在白费力气?

如何在XElement.ToString()中包含声明

如果你想包含xml声明,你可以这样做:

XDocument xdoc = XDocument.Parse(xmlString);
StringBuilder builder = new StringBuilder();
using (TextWriter writer = new StringWriter(builder))
{
    xdoc.Save(writer);
}
Console.WriteLine(builder);

更新:我注意到,StringWriter破坏了编码。所以还有一个选项是这样做:

string docWithDeclaration = xdoc.Declaration + xdoc.ToString();