如何创建接收XML的WebService

本文关键字:XML WebService 何创建 创建 | 更新日期: 2023-09-27 18:08:22

我需要构建一个接受XML数据的web服务。(它必须接受XML,不要建议其他格式,因为这不是一个选项。)

我在谷歌上搜索了"tutorial xml webservice c#"(以及它的各种排列),并遵循了几个教程。我了解如何创建一个web服务一般,并创建了几个基本的web服务来添加数字,转换温度等。

不幸的是,我所有的搜索,包括关键字"xml"answers"webservice"只出现教程如何解析xml文件一旦你有它们或从文件中读取它们。我一开始就得知道怎么弄到他们。我找不到任何解释如何构建接受XML作为输入的web服务的内容。

我应该为应该接收XML的webservice方法使用什么参数类型?它是字符串吗?它是XmlDocument吗?别的吗?

有人能提供如何从 XSD创建c#类和其他东西的教程链接吗?

我发现的一切都表明,通常是通过在c#中创建类,然后使用工具创建XSD来完成的。然而,我需要走相反的方向。我可以去哪里学这个?我不在乎是否必须用手做;我不是在找一个工具来帮我做这件事。

显然我对网络服务很缺乏经验,所以我很感激你能提供的任何帮助。但是请不要引导我去看基本的"web service教程",因为我已经学过好几本了(当他们开始重复我已经学过的材料时,我就停了下来)。

另外,请不要告诉我"你需要学习XML、Web服务、序列化等"和其他过于宽泛的回答。我意识到我需要学习这些东西,我正在努力学习。如果您可以更具体,例如"首先学习c#中的X类,然后学习Y"或"学习WSDL中的X概念,然后学习c#中序列化的Y概念,等等",这将有所帮助。

如果有人能指导我任何免费的在线课程/教程系列,通过这个过程,那将是很棒的。

编辑:好吧,显然这个问题不像我想的那么具体,所以这里有一个例子。

这是另一个代理将发送到我的web服务的内容:

<Person>
    <LegalName>
      <FirstName>Ralph</FirstName>
      <LastName>Anderson</LastName>
      <PhoneticFirstName>rah-lf</PhoneticFirstName>
    </LegalName>
    <SSN>122-34-1232</SSN>
    <Demographics>
      <Sex>male</Sex>
      <Height>502</Height>
    </Demographics>
    <DriversLicense>
      <DriversLicenseNumber>1234</DriversLicenseNumber>
      <IssuingState>CA</IssuingState>
    </DriversLicense>
<Person>

我的理解是我需要这样写:

public Service () {
    [WebMethod]
    public void CreateRecord(XmlDocument newRecord)
    {
        // do stuff
    }
}

如何创建接收XML的WebService

如果我正确理解了这个问题,您可能希望将字符串作为参数,并在收到它后对其进行解析。有其他的方法可以完成同样的事情,但没有更多的信息,我不能建议他们。

为了在收到字符串后解析它,您可以使用xsd.exe工具将XSD反向工程为c#类:http://msdn.microsoft.com/en-us/library/x6c1kb0s(v=vs.110).aspx。该命令类似于xsd.exe /c your.xsd

然后,使用XmlSerializer的DeSerialize方法将XML字符串转换为对象。