如何创建接收XML的Web服务?

时间:2014-06-11 15:12:46

标签: c# xml web-services xsd

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

我已经google了#34;教程xml webservice c#" (及其各种排列)并遵循几个教程。我了解如何创建一般的web服务 ,并创建了几个基本的Web服务来添加数字,转换温度等。

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

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

有人可以提供指向如何创建C#类以及来自 XSD的教程的链接吗?

我发现的所有内容都表明通过在C#中创建类然后使用工具创建XSD来完成通常。但是,我需要走相反的方向。我在哪里可以学习这样做?如果我必须手工做,我不在乎;我没有找工具为我做这件事。

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

另外,请不要告诉我"您需要了解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
    }
}

1 个答案:

答案 0 :(得分:2)

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

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

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

希望这有帮助。