我意识到.NET中的SOAP webservices返回Web方法返回的任何对象的XML表示,但是如果我想在XML中返回数据格式,那么存储它的最佳对象是什么?
我正在使用answer到this question来编写我的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();
现在我可以将此输出作为字符串返回到我的调用webmethod,但它显示为<string> XML HERE </string>
,无论如何只返回完整的xml?
请在您的回答中,举例说明如何将所述对象与XmlWriter或其他内部对象一起使用(如果您认为XmlWriter是一个糟糕的选择)。 System.Xml包(命名空间)有很多对象,但是我无法找到关于如何一起使用这些对象的正确文档,或者在什么情况下使用什么。
答案 0 :(得分:14)
这就是我最终做到的方式;
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;
可能不是最好的方法,但似乎有效。如果您有更好的方法,请告诉我。感谢。
答案 1 :(得分:11)
只需返回一个XmlDocument。 e.g。
[WebMethod]
public XmlDocument Quux()
{
}
答案 2 :(得分:1)
XmlElement,而不是XmlDocument。
答案 3 :(得分:0)
你可以有一个代表你的XML的类并返回该类,或者在XMLNode中返回你的xml