2010-03-17 25 views
2

我继续读大家如何规定,当你想返回XML返回一个XmlDocument的。有没有办法将原始XML作为字符串返回?我使用了许多Web服务(由其他人编写)返回一个包含XML的字符串。如果你返回一个XmlDocument,这个方法如何被不在.Net上的用户使用?提供将XML作为字符串返回的WebMethod。

什么是只返回原始XML作为字符串没有它已经被包裹着<string></string>的方法?

谢谢!

回答

9

的第一件事就是与.net web服务,了解是,他们使用的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返回到调用程序,然后干脆让净拿连载的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); 
+0

我可以用肥皂和我甚至可以返回XmlDocument。如果我返回一个XmlDocument,我有两个问题。 1.如何返回值被其他语言则净消耗?返回值如何看待ATL或Java?在.Net中,它将作为XmlNode xml = MyService.MyCall(); 2.我看到返回“字符串”其他服务和字符串中包含的XML和WSDL中规定使用香皂。他们是如何完成的?他们是否正在执行第1步,并且在它到达我之后又是XML? 谢谢! – BabelFish 2010-03-17 23:03:20

+0

看来你的问题真的是关于其他语言如何使用你的web服务。有一点要明白的是,Web服务通常是基于SOAP的。这是通过XML定义数据的平台不可知的方式。如果您有一个读取.Net Web服务的Java客户端,那么他们将使用XML作为通用中间语言,而不需要依赖调用者了解提供者语言实现。这就是为什么所有的XML都是围绕着结果进行包装的,这是描述性的标记来表示一种语言的数据类型和价值。 – 2010-03-18 09:44:40

相关问题