在.NET(C#)Web服务中原生地返回XML?

我意识到.NET中的SOAP webservices返回web方法返回的任何对象的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返回到我的调用webmethod,但它显示为 XML HERE ,是否还有返回完整的xml?

请在您的答案中,举例说明如何将所述对象与XmlWriter或其他内部对象一起使用(如果您认为XmlWriter是一个糟糕的选择)。 System.Xml包(命名空间)有很多对象,但我无法发现关于如何一起使用对象或在什么情况下使用什么的正确文档。

这就是我最终做到的方式;

 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; 

可能不是最好的方法,但似乎有效。 如果你有更好的方法,请告诉我。 谢谢。

只需返回一个XmlDocument。 例如

 [WebMethod] public XmlDocument Quux() { } 

XmlElement,而不是XmlDocument。

返回一个XmlElement 。

你可以拥有一个代表你的XML的类并返回该类,或者在XMLNode中返回你的xml