代码之家  ›  专栏  ›  技术社区  ›  User

如何从ASMX Web服务返回纯XML?

  •  5
  • User  · 技术社区  · 14 年前

    我想要一个带有getPeople()方法的asmx webservice,该方法返回以下XML(而不是SOAP响应):

    <People>
    
        <Person>
            <FirstName>Sara</FirstName>
            <LastName>Smith</LastName>
        </Person>
    
        <Person>
            <FirstName>Bill</FirstName>
            <LastName>Wilson</LastName>
        </Person>
    
    </People>
    

    我该怎么做?

    4 回复  |  直到 14 年前
        1
  •  3
  •   John Saunders Tony    14 年前

    看看使用 [ScriptMethod] 属性。

        2
  •  3
  •   Coding Flow    14 年前

    如果您不希望响应放在SOAP信封中,那么您是否也不介意使用SOAP调用Web服务。例如,您没有创建代理类Web引用等,只是使用http-post或get来调用Web服务?

    如果是这样,那么不要编写Web服务,而是编写一个ashx处理程序文件。然后您可以简单地将response.contentType设置为text/xml,并执行response.write(xmldocument.toString())。这将返回纯未经调整的XML加上相关的HTTP头。

        3
  •  2
  •   User    14 年前

    我看到了,我可以将方法的返回类型设置为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;
    }
    
        4
  •  1
  •   Abraham Durairaj    14 年前

    您可以使用 Soap Extensions 为您的需求创建/定制。