c# - 如何使用 XElement.ToString() 包含声明

标签 c# xml serialization wcf-rest

我正在尝试为我的网络服务编写一个 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。这甚至可能还是只是在旋转我的轮子?

最佳答案

如果你想包含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();

关于c# - 如何使用 XElement.ToString() 包含声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8648590/

相关文章:

c# - 如何正确访问当前 AppDomain 的 PrivateBinPath 属性?

python,ElementTree,从 xml 文件中添加和删除子元素时出现问题

c++ - boost 类包装指针的序列化

c# - 将自定义创建的位图绘制到屏幕

c# - 如何从 C# 将 cookie 传递给 AxShockwaveFlash?

javascript - 有没有什么功能可以从脚本标签中获取所有大小?

c# - SQL Server中如何查询XML列中的数据

database - 输入流不是有效的二进制格式。

c# - 如何在没有包含元素的情况下序列化 'Any' 元素序列

c# - sql 作业每隔一定时间运行并执行控制台应用程序