提供将XML作为字符串返回的WebMethod。

时间:2010-03-17 22:38:00

标签: .net xml web-services webmethod

我一直在阅读当你想要返回XML时每个人都声明如何返回XmlDocument。有没有办法将原始XML作为字符串返回?我使用了许多返回包含XML的字符串的Web服务(由其他人编写)。如果您返回XmlDocument,那么不在.Net上的用户如何使用该方法?

将原始XML作为字符串返回而没有用<string></string>包装的方法是什么?

谢谢!

1 个答案:

答案 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);