2010-05-06 17 views
5

Żądam usługa ASMX z GetPeople() metoda, która zwraca następujące XML (nie odpowiedzi SOAP):Jak mogę zwrócić czysty XML z usługi sieciowej ASMX?

<People> 

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

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

</People> 

Jak mogę to zrobić?

Odpowiedz

2

Widzę, że mogę ustawić typ zwracanej metody na XmlDocument. To wydaje się działać.

[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: Czy próbowałeś tego? To nie działa. Zwróci ten kod XML wewnątrz koperty SOAP. –

+0

Tak, spróbowałem, a przynajmniej za pomocą metody "wywołaj" na wygenerowanej stronie auto działało, stąd mój post. Spróbuję jeszcze raz, aby to potwierdzić. – User

+4

Nigdy, przenigdy, nie polegaj na tej stronie testowej. Między innymi nie używa metod SOAP! –

3

Jeśli nie chcesz, aby odpowiedź znajdowała się w kopercie SOAP, nie martwisz się również wywołaniem usługi internetowej przy użyciu protokołu SOAP. na przykład nie tworzysz odnośników do stron pośredniczących itp. i po prostu korzystasz z http post lub zadzwonisz do serwisu?

Jeśli tak, zamiast pisać serwis internetowy, napisz plik obsługi ASHX. Następnie możesz po prostu ustawić Response.ContentType na text/xml i zrobić Response.Write (XmlDocument.ToString()). To zwróci czysty nieudokumentowany kod XML plus relevent nagłówków HTTP.

+0

. Rozważam również tę opcję. Ale nadal jestem zainteresowany odpowiedzią na to pytanie. – User

Powiązane problemy