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

Bab*_*ish 2 .net xml web-services webmethod

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

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

谢谢!

Bri*_*ott 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;
}
Run Code Online (Sandbox Code Playgroud)

但是,如果您尝试将实际的XML返回给调用者,那么只需让.Net负责将XML序列化,如下所示:

[WebMethod]
public XmlDocument ReturnXMLString() {
    XmlDocument xmlDoc = new XmlDocument();
    xmlDoc.LoadXml("<root><item>Hello World</item></root>");
    return xmlDoc;
}
Run Code Online (Sandbox Code Playgroud)

最后,如果您只是在寻找没有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);
Run Code Online (Sandbox Code Playgroud)