我有这个XML;
<ChartXml>
<Category type="xAxis">
<Value>Mon</Value>
<Value>Tue</Value>
<Value>Wed</Value>
<Value>Thurs</Value>
<Value>Friday</Value>
</Category>
</ChartXml>
这个班级结构;
[XmlRoot("ChartXml")]
public class ChartXml
{
[XmlElement("Category")]
public Category Category;
}
public class Category
{
[XmlAttribute("type")]
public string Type;
[XmlArray("Value")]
public List<string> Values;
}
现在,当我尝试将XML序列化为ChartXml对象时,我得到的对象包含类型属性设置正确的类别,但我没有得到我的字符串列表。
我猜测我设置课程的方式有问题。
谢谢, 詹姆斯。
答案 0 :(得分:3)
使用[XmlElement("Value")]
代替[XmlArray("Value")]
,例如:
[XmlRoot("ChartXml")]
public class ChartXml
{
[XmlElement("Category")]
public Category Category;
}
public class Category
{
[XmlAttribute("type")]
public string Type;
[XmlElement("Value")]
public List<string> Values;
}
序列化:
var obj = new ChartXml { Category = new Category { Type = "t", Values = new List<string> { "a", "b", "c" } } };
var ser = new XmlSerializer(obj.GetType());
using (var tw=new StringWriter())
{
ser.Serialize(tw, obj);
Console.WriteLine(tw.ToString());
}
输出:
<?xml version="1.0" encoding="utf-16"?>
<ChartXml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http:
//www.w3.org/2001/XMLSchema">
<Category type="t">
<Value>a</Value>
<Value>b</Value>
<Value>c</Value>
</Category>
</ChartXml>
答案 1 :(得分:0)
使用[XmlElement(“Value”)]代替[XmlArray(“Value”)]