Reputation: 57
I want to get the below given xml as an output for a WCF service.
<?xml version="1.0" encoding="UTF-8"?>
<payloads>
<payload>
<firstname>Sid</firstname>
<secondname>Singh</secondname>
<number>1</number>
</payload>
<payload>
<firstname>Deepak</firstname>
<secondname>Shahi</secondname>
<number>2</number>
</payload>
<payload>
<firstname>Shorya</firstname>
<secondname>Garg</secondname>
<number>3</number>
</payload>
</payloads>
Given below is my service contract and data contract for WCF:-
[ServiceContract]
public interface IService1
{
[OperationContract]
Payload Payloads(Payload Payload);
}
[DataContract(Name = "Payload")]
public class Payload
{
public string _firstname;
public string _secondname;
public string _number;
[DataMember(Name = "firstname")]
public string firstname
{
get { return _firstname; }
set { _firstname = value; }
}
[DataMember(Name = "secondname")]
public string secondname
{
get { return _secondname; }
set { _secondname = value; }
}
[DataMember(Name = "number")]
public string number
{
get { return _number; }
set { _number = value; }
}
}
And given below is my class:-
public class Service1 : IService1
{
public Payload Payloads(Payload Payload)
{
if (Payload == null)
{
throw new ArgumentNullException("Payload");
}
return Payload;
}
}
I am not getting my desired output as in the XML given above using my WCF. please help. Thanks in advance :)
Upvotes: 1
Views: 538
Reputation: 6203
Your model
[XmlRoot(ElementName="payload")]
public class Payload {
[XmlElement(ElementName="firstname")]
public string Firstname { get; set; }
[XmlElement(ElementName="secondname")]
public string Secondname { get; set; }
[XmlElement(ElementName="number")]
public string Number { get; set; }
}
[XmlRoot(ElementName="payloads")]
public class Payloads {
[XmlElement(ElementName="payload")]
public List<Payload> Payload { get; set; }
}
IServ
[OperationContract]
[WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Xml,
BodyStyle = WebMessageBodyStyle.Bare,
UriTemplate = "GetPay")]
Payload GetPay();
Serv
public Payload GetPay()
{
return new Payload();
}
Tested and work.
Upvotes: 2