2010-05-06 111 views
5

我想用一个方法GetPeople()返回下面的XML(而不是SOAP响应)的ASMX Web服务:如何从asmx web服务返回纯XML?

<People> 

    <Person> 
     <FirstName>Sara</FirstName> 
     <LastName>Smith</LastName> 
    </Person> 

    <Person> 
     <FirstName>Bill</FirstName> 
     <LastName>Wilson</LastName> 
    </Person> 

</People> 

我怎样才能做到这一点?

回答

2

我看到我可以将方法的返回类型设置为XmlDocument。这似乎工作。

[WebMethod] 
public XmlDocument ReturnXml() 
{ 
    XmlDocument dom = new XmlDocument(); 

    XmlElement people = dom.CreateElement("People"); 
    dom.AppendChild(people); 

    XmlElement person = dom.CreateElement("Person"); 
    people.AppendChild(person); 

    XmlElement firstName = dom.CreateElement("FirstName"); 
    person.AppendChild(firstName); 

    XmlText text = dom.CreateTextNode("Bob"); 
    firstName.AppendChild(text); 



    // load some XML ... 
    return dom; 
} 
+0

-1:你试过了吗?这是行不通的。它将在SOAP信封中返回该XML。 – 2010-05-06 23:48:59

+0

是的,我尝试过,至少通过生成它的自动页面上的“invoke”方法,因此我的帖子。我会再次尝试确认。 – User 2010-05-07 02:06:04

+4

永远不会依赖于测试页面。除此之外,它不调用使用SOAP的方法! – 2010-05-07 11:06:58

3

如果您不希望响应位于SOAP信封中,那么您是否也不打扰使用SOAP调用Web服务。例如你不是创建代理类的Web引用等,只使用http post或打电话给Web服务?

如果不是编写Web服务,而是编写一个ASHX处理程序文件。然后,您可以简单地将Response.ContentType设置为text/xml并执行Response.Write(XmlDocument.ToString())。这将返回纯粹的unadulaterated XML加上相关的http头。

+0

我正在考虑该选项。但我仍然对这个问题的答案感兴趣。 – User 2010-05-07 16:28:08