Возвращение XML изначально в веб-службе .NET(С#)?

Я понимаю, что веб-службы SOAP в .NET возвращают XML-представление любого объекта, возвращаемого веб-методом, но если я хочу вернуть форматирование данных в XML, что является лучшим объектом для его хранения?

Я использую ответ на этот вопрос, чтобы написать свой XML, вот код:

XmlWriter writer = XmlWriter.Create(pathToOutput);
writer.WriteStartDocument();
writer.WriteStartElement("People");

writer.WriteStartElement("Person");
writer.WriteAttributeString("Name", "Nick");
writer.WriteEndElement();

writer.WriteStartElement("Person");
writer.WriteStartAttribute("Name");
writer.WriteValue("Nick");
writer.WriteEndAttribute();
writer.WriteEndElement();

writer.WriteEndElement();
writer.WriteEndDocument();

writer.Flush();

Теперь я могу вернуть этот вывод в качестве String в мой вызывающий веб-метод, но он отображается как <string> XML HERE </string>, так или иначе просто вернуть полный xml?

Пожалуйста, в своем ответе укажите пример использования указанного объекта с XmlWriter или другим внутренним объектом (если вы считаете, что XmlWriter является плохим выбором). Пакет System.Xml(пространство имен) имеет много объектов, но я не смог раскрыть приличную документацию о том, как использовать объекты вместе или что использовать для каких ситуаций.

Ответ 1

Вот как я это сделал:

StringBuilder sb = new StringBuilder();
XmlWriter writer = XmlWriter.Create(sb, settings);

writer.WriteStartDocument();
writer.WriteStartElement("People");

writer.WriteStartElement("Person");
writer.WriteAttributeString("Name", "Nick");
writer.WriteEndElement();

writer.WriteStartElement("Person");
writer.WriteStartAttribute("Name");
writer.WriteValue("Nick");
writer.WriteEndAttribute();
writer.WriteEndElement();

writer.WriteEndElement();
writer.WriteEndDocument();

writer.Flush();

XmlDocument xmlDocument = new XmlDocument();
xmlDocument.LoadXml(sb.ToString());
return xmlDocument;

Может быть, не лучший метод, но он работает. Дайте мне знать, если у вас есть лучший метод. Спасибо.

Ответ 2

Просто верните XmlDocument. например.

[WebMethod]
public XmlDocument Quux()
{

}

Ответ 4

у вас может быть класс, представляющий ваш XML, и верните этот класс, а также верните xml внутри XMLNode