Reputation: 319
I'm Having Below Class i.e ReconciliationRequest.cs
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
[XmlRoot("ReconciliationRequest")]
[Serializable]
public class ReconciliationRequest
{
public List<Patient> PatientDetails;
}
[Serializable]
public class Patient
{
[XmlElement("NHSNumber")]
public string NHSNumber { get; set; }
[XmlElement("PDSChangeSerialNumber")]
public string PDSChangeSerialNumber { get; set; }
}
I want to serialize it into XML In Below Format
<ReconciliationRequest xmlns="http://schemas.capita.co.uk/pcse/crm">
<Patient>
<NHSNumber>1234567890</NHSNumber>
<PDSChangeSerialNumber>1234</PDSChangeSerialNumber>
</Patient>
</ReconciliationRequest>
But I'm Getting It into below format,i dont want PatientDetails tag in xml, iwant it in above mentioned result.
<ReconciliationRequest>
<PatientDetails>
<Patient>
<NHSNumber>9411992455</NHSNumber>
<PDSChangeSerialNumber>5</PDSChangeSerialNumber>
</Patient>
<Patient>
<NHSNumber>9801153512</NHSNumber>
<PDSChangeSerialNumber>20</PDSChangeSerialNumber>
</Patient>
</PatientDetails>
</ReconciliationRequest>
I don't want PatientDetails Node . Below is the code i used to serialize this class object into XML
ReconciliationRequest obj = new ReconciliationRequest();
Patient obj1;
List<Patient> PatientDetails = new List<Patient>();
if (results.Entities.Count > 0)
{
var PatientData = results.Entities[0].ToEntity<Contact>();
foreach (var item in results.Entities)
{
obj1 = new Patient();
if (item.Attributes.Keys.Contains("scr_nhs_number") && item.Attributes.Keys.Contains("csr_pdsserialchangenumber"))
{
if (!string.IsNullOrEmpty(item.Attributes["scr_nhs_number"].ToString()))
{
obj1.NHSNumber = item.Attributes["scr_nhs_number"].ToString();
}
if (!string.IsNullOrEmpty(item.Attributes["csr_pdsserialchangenumber"].ToString()))
{
obj1.PDSChangeSerialNumber = item.Attributes["csr_pdsserialchangenumber"].ToString();
}
PatientDetails.Add(obj1);
}
}
obj.PatientDetails = PatientDetails;
XmlSerializer serializer =
new XmlSerializer(typeof(ReconciliationRequest));
TextWriter writer = new StreamWriter("D:\\CS\\data3.xml");
XmlSerializerNamespaces nameSpace = new XmlSerializerNamespaces();
nameSpace.Add(string.Empty, "http://schemas.capita.co.uk/pcse/crm");
serializer.Serialize(writer, obj, nameSpace);
writer.Close();
}
}
Please guide me how can resolve this.
Upvotes: 2
Views: 62
Reputation: 206
Try this make your class inherit by List
public class ReconciliationRequest<T> : List<T>
{
}
and use it like this.
ReconciliationRequest<Patient> obj = new ReconciliationRequest<Patient>();
obj.Add(new Patient());
This will Eliminate your details tag.
Upvotes: 1
Reputation: 1062780
[XmlRoot("ReconciliationRequest", Namespace = "http://schemas.capita.co.uk/pcse/crm")]
public class ReconciliationRequest
{
[XmlElement("Patient")]
public List<Patient> PatientDetails;
}
although personally I'd use:
[XmlElement("Patient")]
public List<Patient> PatientDetails { get; } = new List<Patient>();
Upvotes: 3