class 序列化为 XML C#
serialization of class into XML C#
我低于 Class 即 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 In Below Format
<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 节点。
下面是我用来将这个 class 对象序列化为 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>();
试试这个让你的 class 被 List
继承
public class ReconciliationRequest<T> : List<T>
{
}
并像这样使用它。
ReconciliationRequest<Patient> obj = new ReconciliationRequest<Patient>();
obj.Add(new Patient());
这将消除您的详细信息标签。
我低于 Class 即 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 In Below Format
<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 节点。 下面是我用来将这个 class 对象序列化为 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>();
试试这个让你的 class 被 List
继承 public class ReconciliationRequest<T> : List<T>
{
}
并像这样使用它。
ReconciliationRequest<Patient> obj = new ReconciliationRequest<Patient>();
obj.Add(new Patient());
这将消除您的详细信息标签。