簡體   English   中英

序列化 - 加倍的Xml屬性

[英]Serialization - Doubled Xml Attribute

我有序列化加倍表示“caseList”類的xml屬性的問題:

這是我得到的:

<import xmlns_xsi="http://www.w3.org/2001/XMLSchema-instance" xsi_noNamespaceSchemaLocation="TR-DGU%20Import-Schema%20V2015%20-%20Stand%20M%C3%A4rz%202016.xsd">
<creationDate>2016-05-19</creationDate>
<hospitalCode>A-0000-A</hospitalCode>
<importCasesWithErrors>1</importCasesWithErrors>
<caseList>
    <case>
        <patientCode>sdf</patientCode>
        <internalPatientId>sdfsdfsdfsdfsdf</internalPatientId>
    </case>
</caseList>
<caseList>
    <case>
        <patientCode>654654</patientCode>
        <internalPatientId>123654654</internalPatientId>
    </case>
</caseList>

我需要的是這個:

<import xmlns_xsi="http://www.w3.org/2001/XMLSchema-instance" xsi_noNamespaceSchemaLocation="TR-DGU%20Import-Schema%20V2015%20-%20Stand%20M%C3%A4rz%202016.xsd">
<creationDate>2016-05-19</creationDate>
<hospitalCode>A-0000-A</hospitalCode>
<importCasesWithErrors>1</importCasesWithErrors>
<caseList>
    <case>
        <patientCode>sdf</patientCode>
        <internalPatientId>sdfsdfsdfsdfsdf</internalPatientId>
    </case>

    <case>
        <patientCode>654654</patientCode>
        <internalPatientId>123654654</internalPatientId>
    </case>
</caseList>

現在,我有“import”類,包含“caseList”。 “caseList”包含“caseItems”類,然后包含“cases”類。

繼承守則:

import.cs

[XmlRoot("import")]
public class Import
{
    [XmlAttribute("xmlns_xsi")]
    public string XMLNS { get; set; }

    [XmlAttribute("xsi_noNamespaceSchemaLocation")]
    public string XMLNSLocation { get; set; }

    [XmlElement("creationDate")]
    public string CreationDate { get; set; }

    [XmlElement("hospitalCode")]
    public string HospitalCode { get; set; }

    [XmlElement("importCasesWithErrors")]
    public int ImportCasesWithErrors { get; set; }

    [XmlElement("caseList")]
    public List<CaseItem> caseList { get; set; }

    //[XmlElement("masterData")]
    //public MasterData MasterData { get; set; }

    public Import(List<CaseItem> caseItemList)
    {
        caseList = caseItemList;
    }

    public Import()
    {
    }

}

CaseList.cs

[Serializable]
[XmlRoot("Import")]
public class CaseList
{

    [XmlElement("caseList")]
    public List<CaseItem> caseList
    {
        get;
        set;
    }

    public CaseList(List<CaseItem> caseItemList)
    {
        caseList = caseItemList;
    }

    public CaseList()
    {
    }

}

CaseItem.cs

[Serializable]
[XmlRoot("import")]
public class CaseItem
{

    //[XmlElement("masterdata")]
    //public MasterData masterdata { get; set; }

    [XmlElement("case")]
    public Cases cases { get; set; }

    public CaseItem(Cases cases)
    {
        this.cases = cases;
    }

    public CaseItem()
    {
    }
}

Cases.cs

public class Cases
{

    [XmlElement("patientCode")]
    public string PatientCode { get; set; }

    [XmlElement("internalPatientId")]
    public string InternalPatientId { get; set; }

    public Cases()
    {

    }
}

最后是初始化整個事情的部分:

private static Import CreateExportDGU()
    {
        List<CaseItem> caseItemList = new List<CaseItem>();

        Cases case1 = new Cases();
        case1.InternalPatientId = "sdfsdfsdfsdfsdf";
        case1.PatientCode = "sdf";

        CaseItem CaseItem1 = new CaseItem(case1);
        caseItemList.Add(CaseItem1);

        Cases case2 = new Cases();
        case2.InternalPatientId = "123654654";
        case2.PatientCode = "654654";

        CaseItem CaseItem2 = new CaseItem(case2);
        caseItemList.Add(CaseItem2);

        Import import = new Import(caseItemList);
        import.XMLNS = "http://www.w3.org/2001/XMLSchema-instance";
        import.XMLNSLocation = "TR-DGU%20Import-Schema%20V2015%20-%20Stand%20M%C3%A4rz%202016.xsd";

        import.CreationDate = "2016-05-19";
        import.HospitalCode = "A-0000-A";
        import.ImportCasesWithErrors = 1;

        return import;
    }

然后將導入序列化。

任何幫助真的很感激!

最好的問候桑德羅

使用XmlArray屬性表示數組,將列表對象類型表示為XmlArrayItem屬性。 您還需要完全分解出CaseItem。

import.cs

[XmlRoot("import")]
public class Import
{
    [XmlAttribute("xmlns_xsi")]
    public string XMLNS { get; set; }

    [XmlAttribute("xsi_noNamespaceSchemaLocation")]
    public string XMLNSLocation { get; set; }

    [XmlElement("creationDate")]
    public string CreationDate { get; set; }

    [XmlElement("hospitalCode")]
    public string HospitalCode { get; set; }

    [XmlElement("importCasesWithErrors")]
    public int ImportCasesWithErrors { get; set; }

    [XmlArray("caseList")]
    [XmlArrayItem("case")]
    public List<Cases> caseList { get; set; }

    //[XmlElement("masterData")]
    //public MasterData MasterData { get; set; }

    public Import(List<Cases> caseItemList)
    {
        caseList = caseItemList;
    }

    public Import()
    {
    }

}

CaseList.cs

[Serializable]
[XmlRoot("Import")]
public class CaseList
{

    [XmlElement("caseList")]
    public List<Cases> caseList
    {
        get;
        set;
    }

    public CaseList(List<Cases> caseItemList)
    {
        caseList = caseItemList;
    }

    public CaseList()
    {
    }

}

Cases.cs

public class Cases
{

    [XmlElement("patientCode")]
    public string PatientCode { get; set; }

    [XmlElement("internalPatientId")]
    public string InternalPatientId { get; set; }

    public Cases()
    {

    }
}

最后是初始化整個事情的部分:

{
    List<Cases> caseItemList = new List<Cases>();

    Cases case1 = new Cases();
    case1.InternalPatientId = "sdfsdfsdfsdfsdf";
    case1.PatientCode = "sdf";

    caseItemList.Add(case1);

    Cases case2 = new Cases();
    case2.InternalPatientId = "123654654";
    case2.PatientCode = "654654";

    caseItemList.Add(case2);

    Import import = new Import(caseItemList);
    import.XMLNS = "http://www.w3.org/2001/XMLSchema-instance";
    import.XMLNSLocation = "TR-DGU%20Import-Schema%20V2015%20-%20Stand%20M%C3%A4rz%202016.xsd";

    import.CreationDate = "2016-05-19";
    import.HospitalCode = "A-0000-A";
    import.ImportCasesWithErrors = 1;

    var s = new System.Xml.Serialization.XmlSerializer(import.GetType());
    s.Serialize(Console.Out, import);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM