Как включить объявление с XElement.ToString () - PullRequest
6 голосов
/ 27 декабря 2011

Я пытаюсь написать 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().

Я действительно просто хочу вернуть пользовательский XML из моей службы REST, не приводя мою строку 100 раз, чтобы вернуть действительный XML. Это вообще возможно или я просто вращаю свои колеса?

1 Ответ

0 голосов
/ 22 октября 2013

Если вы хотите включить объявление 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();
...