0

i am fairly new at WCF and i am trying to write a service which receives an xml message, (sorry for the vagueness here) then I need to do a bunch of tasks based on the XML content.

Previously this was an ASMX service that accept a string and converted it to XML but now we are moving to WCF i need to create a data contract and this is were I am stumbling the XML format is below

<SRREQUEST>
<GENERATED_DATE>2016-02-21T14:23:54</GENERATED_DATE>
<SYSTEMID>xxxx</SYSTEMID>
<SERVICEREQUEST>
    <SR_NUMBER>xxxx</SR_NUMBER>
    <CUSTOMER_ACCT>xxxx</CUSTOMER_ACCT>
    <CONTACT_ID>xxxx</CONTACT_ID>
    <CONTACT_NAME>xxxx</CONTACT_NAME>
    <CONTACT_EMAIL>xxxx</CONTACT_EMAIL>
    <END_USER_NAME>xxxx</END_USER_NAME>
    <END_USER_EMAIL>xxxx</END_USER_EMAIL>
    <END_USER_PHONE>xxxx</END_USER_PHONE>
    <SITENAME>xxxx</SITENAME>
    <ADDRESS_1>xxxx</ADDRESS_1>
    <ADDRESS_2>xxxx</ADDRESS_2>
    <CITY>xxxx</CITY>
    <COUNTRY>xxxx</COUNTRY>
    <POSTCODE>xxxx</POSTCODE>
    <SR_TYPE>xxxx</SR_TYPE>
    <RETURN_REASON>xxxx</RETURN_REASON>
    <WARRANTY_TYPE>xxxx</WARRANTY_TYPE>
    <RETURN_TYPE>xxxx</RETURN_TYPE>
    <PRIORITY>xxxx</PRIORITY>
    <ORIGIN>xxxx</ORIGIN>
    <CUST_REF>xxxx</CUST_REF>
    <CUST_COMMENTS>xxxx</CUST_COMMENTS>
    <CUST_UPDATE>xxxx</CUST_UPDATE>
    <BRAND>xxxx</BRAND>
    <TYPE>xxxx</TYPE>
    <MODEL>xxxx</MODEL>
    <ASSET_TAG>xxxx</ASSET_TAG>
    <SERIAL_NUMBER>xxxx</SERIAL_NUMBER>
    <ORDER_REF_NUM>xxxx</ORDER_REF_NUM>
    <ORDER_NUMBER>xxxx</ORDER_NUMBER>
</SERVICEREQUEST>
</SRREQUEST>

This XML could have multiple SERVICEREQUEST tags

Currently I have this OperationContract

[OperationContract]
    [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Xml)]
    string ServiceRequest(ServiceRequest data);

but my datacontract is empty

So this would be an example of one with multiple service requests

<SRREQUEST>
 <GENERATED_DATE>2016-02-21T14:23:54</GENERATED_DATE>
 <SYSTEMID>xxxx</SYSTEMID>
 <SERVICEREQUEST>
     <SR_NUMBER>xxxx</SR_NUMBER>
     <CUSTOMER_ACCT>xxxx</CUSTOMER_ACCT>
     <CONTACT_ID>xxxx</CONTACT_ID>
     <CONTACT_NAME>xxxx</CONTACT_NAME>
     <CONTACT_EMAIL>xxxx</CONTACT_EMAIL>
     <END_USER_NAME>xxxx</END_USER_NAME>
     <END_USER_EMAIL>xxxx</END_USER_EMAIL>
     <END_USER_PHONE>xxxx</END_USER_PHONE>
     <SITENAME>xxxx</SITENAME>
     <ADDRESS_1>xxxx</ADDRESS_1>
     <ADDRESS_2>xxxx</ADDRESS_2>
     <CITY>xxxx</CITY>
     <COUNTRY>xxxx</COUNTRY>
     <POSTCODE>xxxx</POSTCODE>
     <SR_TYPE>xxxx</SR_TYPE>
     <RETURN_REASON>xxxx</RETURN_REASON>
     <WARRANTY_TYPE>xxxx</WARRANTY_TYPE>
     <RETURN_TYPE>xxxx</RETURN_TYPE>
     <PRIORITY>xxxx</PRIORITY>
     <ORIGIN>xxxx</ORIGIN>
     <CUST_REF>xxxx</CUST_REF>
     <CUST_COMMENTS>xxxx</CUST_COMMENTS>
     <CUST_UPDATE>xxxx</CUST_UPDATE>
     <BRAND>xxxx</BRAND>
     <TYPE>xxxx</TYPE>
     <MODEL>xxxx</MODEL>
     <ASSET_TAG>xxxx</ASSET_TAG>
     <SERIAL_NUMBER>xxxx</SERIAL_NUMBER>
     <ORDER_REF_NUM>xxxx</ORDER_REF_NUM>
     <ORDER_NUMBER>xxxx</ORDER_NUMBER>
 </SERVICEREQUEST>
 <SERVICEREQUEST>
     <SR_NUMBER>xxxx</SR_NUMBER>
     <CUSTOMER_ACCT>xxxx</CUSTOMER_ACCT>
     <CONTACT_ID>xxxx</CONTACT_ID>
     <CONTACT_NAME>xxxx</CONTACT_NAME>
     <CONTACT_EMAIL>xxxx</CONTACT_EMAIL>
     <END_USER_NAME>xxxx</END_USER_NAME>
     <END_USER_EMAIL>xxxx</END_USER_EMAIL>
     <END_USER_PHONE>xxxx</END_USER_PHONE>
     <SITENAME>xxxx</SITENAME>
     <ADDRESS_1>xxxx</ADDRESS_1>
     <ADDRESS_2>xxxx</ADDRESS_2>
     <CITY>xxxx</CITY>
     <COUNTRY>xxxx</COUNTRY>
     <POSTCODE>xxxx</POSTCODE>
     <SR_TYPE>xxxx</SR_TYPE>
     <RETURN_REASON>xxxx</RETURN_REASON>
     <WARRANTY_TYPE>xxxx</WARRANTY_TYPE>
     <RETURN_TYPE>xxxx</RETURN_TYPE>
     <PRIORITY>xxxx</PRIORITY>
     <ORIGIN>xxxx</ORIGIN>
     <CUST_REF>xxxx</CUST_REF>
     <CUST_COMMENTS>xxxx</CUST_COMMENTS>
     <CUST_UPDATE>xxxx</CUST_UPDATE>
     <BRAND>xxxx</BRAND>
     <TYPE>xxxx</TYPE>
     <MODEL>xxxx</MODEL>
     <ASSET_TAG>xxxx</ASSET_TAG>
     <SERIAL_NUMBER>xxxx</SERIAL_NUMBER>
     <ORDER_REF_NUM>xxxx</ORDER_REF_NUM>
     <ORDER_NUMBER>xxxx</ORDER_NUMBER>
 </SERVICEREQUEST>
 </SRREQUEST>

Any help would be appreciated.

Paul Coan
  • 302
  • 1
  • 3
  • 15
  • What does `ServiceRequest` correspond to? Is it ``? If so, do you want to map the multiple `` tags to some sort of `List` ? – dbc Apr 11 '16 at 23:28
  • ServiceRequest corresponds to then within that there could be multiple . Hope that makes sense – Paul Coan Apr 11 '16 at 23:35
  • Then you may need to [switch to `XmlSerializer`](https://stackoverflow.com/questions/4050938/how-to-change-wcf-to-use-a-different-serializer). `DataContractSerializer` can only serialize a list with an outer element, which you don't have; see [Data Contract Serializer - How to omit the outer element of a collection](https://stackoverflow.com/questions/8591045/data-contract-serializer-how-to-omit-the-outer-element-of-a-collection). Would need to see your classes in an [mcve](https://stackoverflow.com/help/mcve) to say for sure. – dbc Apr 11 '16 at 23:40

0 Answers0