我已针对同一问题查看了其他几个问题,但未能解决我的问题。我有类,代码和XML如下。但是,在Deserialize调用之后,我的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; }
}
}
答案 0 :(得分:2)
结果证明代码工作正常,没有任何序列化属性。
public class TestRootElement
{
public List<TestItem> TestList { get; set; }
}
public class TestItem
{
public string TestElement { get; set; }
}
因此,我一次一个地添加属性,我发现List&lt;&gt;需要一个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; }
}