Pergunta

Eu continuo lendo como todos afirmam devolver um XMLDocument quando você deseja retornar XML. Existe uma maneira de retornar XML bruto como uma string? Eu usei muitos serviços da Web (escritos por outros) que retornam uma string que contém XML. Se você retornar um Xmldocument, como esse método é consumido por usuários que não estão no .NET?

Qual é o método para apenas retornar o XML bruto como string sem ter sido embrulhado <string></string>?

Obrigado!

Foi útil?

Solução

A primeira coisa a entender com o .Net WebServices é que eles usaram o protocolo SOAP. Isso significa que, quaisquer que os tipos que você retorne através do seu método da Web, eles serão serializados para XML. Portanto, todo objeto retornado será uma string XML passada de volta ao chamador.

Se você ainda está simplesmente procurando retornar o XML como um valor de string real, crie um método do lado do servidor dentro do seu serviço da web da seguinte maneira:

[WebMethod]
public string ReturnXMLString() {
    XmlDocument xmlDoc = new XmlDocument();
    xmlDoc.LoadXml("<root><item>Hello World</item></root>");
    return xmlDoc.OuterXML;
}

Se, no entanto, você estiver tentando devolver o XML real a um chamador, basta deixar o .Net cuidar de serializar o XML da seguinte forma:

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

Por fim, se você está simplesmente procurando uma resposta XML sem o Protocolo de SOAP e serializando a resposta como XML, tente uma resposta de página de uma página sob medida:

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);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top