我一直在阅读当你想要返回XML时每个人都声明如何返回XmlDocument。有没有办法将原始XML作为字符串返回?我使用了许多返回包含XML的字符串的Web服务(由其他人编写)。如果您返回XmlDocument,那么不在.Net上的用户如何使用该方法?
将原始XML作为字符串返回而没有用<string></string>
包装的方法是什么?
谢谢!
答案 0 :(得分:9)
首先要了解.Net webservices是他们使用SOAP协议。这意味着无论您通过Web方法返回什么类型,它们都将序列化为XML。因此,每个返回的对象都将是一个传递给调用者的XML字符串。
如果您仍然只是想将XML作为实际字符串值返回,那么在Web服务中创建服务器端方法,如下所示:
[WebMethod]
public string ReturnXMLString() {
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml("<root><item>Hello World</item></root>");
return xmlDoc.OuterXML;
}
但是,如果您尝试将实际XML返回给调用者,那么只需让.Net负责按如下方式序列化XML:
[WebMethod]
public XmlDocument ReturnXMLString() {
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml("<root><item>Hello World</item></root>");
return xmlDoc;
}
最后,如果您只是在寻找没有SOAP协议的XML响应并将响应序列化为XML,那么请尝试从定制页面进行页面响应:
void Page_Load(object sender, EventArgs e) {
XmlDocument xmlDoc= new XmlDocument();
xmlDoc.LoadXml("<root>Hello World</root>");
Response.ContentType ="text/xml";
xmlDoc.Save(Response.Output);