将XML包装元素添加到序列化数据中

本文关键字:序列化 数据 添加 XML 包装 元素 | 更新日期: 2023-09-27 18:29:11

我有几个列表,这些列表已序列化为XML文件。

我很难弄清楚如何将XML包装器元素放在元素列表中。

目前我的XML是这样的:

    <finding>
        <issue1></issue1>
        <issue2><issue2 />
        <issue3><issue3 />
    </finding>
<finding>
        <issue1></issue1>
        <issue2><issue2 />
        <issue3><issue3 />
    </finding>

我想包装这些finding元素,使XML看起来像这样:

   <Findings>       
        <finding>
                <issue1></issue1>
                <issue2><issue2 />
                <issue3><issue3 />
            </finding>
        <finding>
                <issue1></issue1>
                <issue2><issue2 />
                <issue3><issue3 />
            </finding>
    <findings/>

以下是我如何序列化:

[XmlElement("finding")]
        public List<Findings> Findings { get {return findings;}}

                    [XmlElement("Issue1")]
                    public string getIssue1 { get { return issue1; } }
                    [XmlElement("issue2")]
                    public string getissue2 { get { return issue2; } }
                    [XmlElement("issue3")]
                    public string getissue3 { get { return issue3; } }

这是呼叫代码:

        XmlSerializer ser = new XmlSerializer(typeof(RuleSet));
        using (StreamWriter writer = new StreamWriter(fileName))
        {
            ser.Serialize(writer, findings);                    
        }  

调查结果类别:

 [Serializable()]
    [XmlRoot("Findings")]   
    public class Findings
    {         
        public string issue1;
        public string issue2;
        public string issue3;
        public string issue4;
        public Findings()
        { 
        }
        public Findings(string string flag1, string flag2, string flag3, string flag4)
        {
            this.issue1 = flag1;
            this.issue2 = flag2;
            this.issue3 = flag3;
            this.issue4 = flag4;

        }
    }
}

和规则集类

    [Serializable()]
    public class RuleSet
    {
        private List<Findings> findings  = new List<Findings>();
        Findings findresults = new Findings();   

        [XmlElement("finding")]
        public List<Findings> Findings { get {return findings;}}
                    [XmlElement("Issue1")]
                    public string getIssue1 { get { return findresults.issue1; } }
                    [XmlElement("issue2")]
                    public string getissue2 { get { return findresults.issue2; } }
                    [XmlElement("issue3")]
                    public string getissue3 { get { return findresults.issue3; } }
                    [XmlElement("issue4")]
                    public string getissue4 { get { return findresults.issue4; } }

        public void setFindings(List<Findings> findings)
        {
            this.findings = findings;
        }

        public void addFindings(Findings findings)
        {
            this.findings.Add(findings);
        }
    }
}

我已经和这个斗争了好几个小时了。我错过了什么?

将XML包装元素添加到序列化数据中

这应该有效:

public class Findings
{
  [System.Xml.Serialization.XmlElementAttribute("finding")]
  public List<Finding> finding = new List<Finding>();
}
public class Finding
{
  public string issue1;
  public string issue2;
  public string issue3;
}

请注意为列表中的项目命名的XmlElementAttribute。在这种情况下,使用小写CCD_。此外,我的示例使用了issue1等字段,但您的属性也可以。