2010-05-06 109 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