1

我已经针对同一问题查看了其他几个问题,但未能解决我的问题。我有如下的类、代码和 XML。但是,在 Deserialize 调用之后,我的类型变量包含一个 TestList 数组,其中包含一个 TestElement 但 TestElement 为空。感谢任何帮助。谢谢。

using System;
using System.Collections.Generic;
using System.IO;
using System.Xml.Serialization;

namespace TestXMLSerialization
{
    class Program
    {
        static void Main(string[] args) {
            XmlSerializer ser = new XmlSerializer(typeof(TestRootElement));
            string xmlString = "<?xml version=\"1.0\" ?><TestRootElement><TestList><TestItem><TestElement>Test Data</TestElement></TestItem></TestList></TestRootElement>";
            TestRootElement type = (TestRootElement)ser.Deserialize(new StringReader(xmlString));

            Console.WriteLine(type.TestList[0].TestElement);
        }
    }

    [Serializable()]
    [System.Xml.Serialization.XmlRoot("TestRootElement")]
    public class TestRootElement
    {
        [System.Xml.Serialization.XmlElement("TestList")]
        public List<TestItem> TestList { get; set; }
    }

    [Serializable()]
    [System.Xml.Serialization.XmlType("TestItem")]
    public class TestItem
    {
        [System.Xml.Serialization.XmlElement("TestElement")]
        public string TestElement { get; set; }
    }
}
4

1 回答 1

2

结果代码在没有任何序列化属性的情况下工作正常。

public class TestRootElement
{
    public List<TestItem> TestList { get; set; }
}

public class TestItem
{
    public string TestElement { get; set; }
}

因此,一次添加一个属性,我发现 List<> 需要一个 XmlArray 属性而不是 XmlElement。

[Serializable()]
[System.Xml.Serialization.XmlRoot("TestRootElement")]
public class TestRootElement
{
    [XmlArray("TestList")]
    public List<TestItem> TestList { get; set; }
}

[Serializable()]
[XmlType("TestItem")]
public class TestItem
{
    [XmlElement("TestElement")]
    public string TestElement { get; set; }
}
于 2012-10-26T12:31:18.430 回答