[英]serialization of class into XML C#
我有下面的类,即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; }
}
我想将其序列化为以下格式的XML
<ReconciliationRequest xmlns="http://schemas.capita.co.uk/pcse/crm">
<Patient>
<NHSNumber>1234567890</NHSNumber>
<PDSChangeSerialNumber>1234</PDSChangeSerialNumber>
</Patient>
</ReconciliationRequest>
但是我将其转换为以下格式,我不想在xml中添加PatientDetails标签,而不希望其出现在上述结果中。
<ReconciliationRequest>
<PatientDetails>
<Patient>
<NHSNumber>9411992455</NHSNumber>
<PDSChangeSerialNumber>5</PDSChangeSerialNumber>
</Patient>
<Patient>
<NHSNumber>9801153512</NHSNumber>
<PDSChangeSerialNumber>20</PDSChangeSerialNumber>
</Patient>
</PatientDetails>
</ReconciliationRequest>
我不需要PatientDetails Node。 以下是我用于将该类对象序列化为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();
}
}
请指导我如何解决此问题。
[XmlRoot("ReconciliationRequest", Namespace = "http://schemas.capita.co.uk/pcse/crm")]
public class ReconciliationRequest
{
[XmlElement("Patient")]
public List<Patient> PatientDetails;
}
尽管我个人会使用:
[XmlElement("Patient")]
public List<Patient> PatientDetails { get; } = new List<Patient>();
试试这个使您的类被List继承
public class ReconciliationRequest<T> : List<T>
{
}
并像这样使用它。
ReconciliationRequest<Patient> obj = new ReconciliationRequest<Patient>();
obj.Add(new Patient());
这将消除您的详细信息标签。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.