C# 反序列化XML元素返回null 3

C# 反序列化XML元素返回null 3,c#,xml-deserialization,C#,Xml Deserialization,对于同一个问题,我已经研究了其他几个问题,但未能解决我的问题。我有如下的类、代码和XML。但是,在反序列化调用之后,my type变量包含一个TestList数组,该数组包含TestElement,但TestElement为null。谢谢你的帮助。谢谢 using System; using System.Collections.Generic; using System.IO; using System.Xml.Serialization; namespace TestXMLSerializ

对于同一个问题,我已经研究了其他几个问题,但未能解决我的问题。我有如下的类、代码和XML。但是,在反序列化调用之后,my type变量包含一个TestList数组,该数组包含TestElement,但TestElement为null。谢谢你的帮助。谢谢

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; }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.IO;
使用System.Xml.Serialization;
命名空间TestXMLSerialization
{
班级计划
{
静态void Main(字符串[]参数){
XmlSerializer ser=新的XmlSerializer(typeof(TestRootElement));
string xmlString=“测试数据”;
TestRootElement类型=(TestRootElement)序列反序列化(新StringReader(xmlString));
Console.WriteLine(类型.TestList[0].TestElement);
}
}
[可序列化()]
[System.Xml.Serialization.XmlRoot(“TestRootElement”)]
公共类TestRootElement
{
[System.Xml.Serialization.xmlement(“TestList”)]
公共列表TestList{get;set;}
}
[可序列化()]
[System.Xml.Serialization.XmlType(“TestItem”)]
公开课测验
{
[System.Xml.Serialization.XmlElement(“TestElement”)]
公共字符串TestElement{get;set;}
}
}

结果表明,在没有任何序列化属性的情况下,代码可以正常工作

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

public class TestItem
{
    public string TestElement { get; set; }
}
公共类TestRootElement
{
公共列表TestList{get;set;}
}
公开课测验
{
公共字符串TestElement{get;set;}
}
因此,一次将属性添加回一个中,我发现列表需要一个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; }
}
[Serializable()]
[System.Xml.Serialization.XmlRoot(“TestRootElement”)]
公共类TestRootElement
{
[XmlArray(“测试列表”)]
公共列表TestList{get;set;}
}
[可序列化()]
[XmlType(“TestItem”)]
公开课测验
{
[XmlElement(“TestElement”)]
公共字符串TestElement{get;set;}
}

您有太多的
XmlRoot
属性-文档只有一个根,在本例中为
TestRootElement
。谢谢@Oded。然而,这似乎不是问题所在。我已经更正了使用XmlType的代码,但仍然为TestElement获取空值。