c# – 如何创建接收XML的WebService?

我需要构建一个接受
XML数据的Web服务. (它必须接受XML,不建议替代格式,因为这不是一种选择.)

我用谷歌搜索了“教程xml webservice c#”(及其各种排列)并遵循了几个教程.我了解如何创建一般的Web服务,并创建了几个基本的Web服务来添加数字,转换温度等.

不幸的是,我所有包含关键字“xml”和“webservice”的搜索只会提供有关如何解析XML文件或从文件中读取XML文件的教程.我需要知道如何在第一时间获得它们.我找不到任何解释如何构建接受XML作为输入的Web服务的东西.

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

有人可以提供指向如何从XSD创建C#类和诸如此类的东西的教程的链接吗?

我发现的一切都表明它通常是通过在C#中创建类然后使用工具来创建XSD来完成的.但是,我需要走相反的方向.我在哪里可以学习这样做?我不在乎我是否必须手工完成;我不是在寻找一种工具来为我做这件事.

显然我对Web服务缺乏经验,所以我感谢您提供的任何帮助.但请不要指导我参加基本的“网络服务教程”,因为我已经完成了几次(当我们开始重复我已经完成的材料时,我停了下来).

另外,请不要告诉我“您需要了解XML,Web服务,序列化等”以及其他如此广泛的挥手答案.我知道我需要获得这些东西,我正在努力.如果您可以更具体,例如“首先了解c#中的X类,然后了解Y”或“了解WSDL中的X概念,然后了解C#中的Y序列化概念”,这将有所帮助.

如果有人能指导我完成整个过程的任何免费在线课程/教程系列,那也是很棒的.

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

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

<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
    }
}

最佳答案 如果我正确理解了这个问题,你可能想要一个字符串作为参数,并在收到它后解析它.还有其他方法可以完成同样的事情,但没有更多信息,我无法建议.

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

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

希望这可以帮助.

点赞