Возвращение 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()
{
}
Ответ 3
XmlElement, а не XmlDocument.
Вернуть XmlElement.
Ответ 4
у вас может быть класс, представляющий ваш XML, и верните этот класс, а также верните xml внутри XMLNode