XML 列表序列化
XML list serialization
我有以下 XML:
<Product>
<Categories>
<Id>1</Id>
<Id>2</Id>
<Id>3</Id>
<Id>4</Id>
<Id>5</Id>
<Id>6</Id>
<Id>7</Id>
<Id>8</Id>
</Categories>
</Product>
我正在使用 XmlSerializer
将其反序列化为 .NET 类型。
我的目标是将其取消实现为:
public class Product
{
public List<int> Categories { get; set; }
}
不幸的是,我没有设法将它反序列化为这种类型(Categories
属性 是空的)。我该怎么做?
我设法做到了,但我对这样的解决方案不满意。
[Serializable]
public class Categories
{
[XmlElement]
public List<Int32> Id { get; set; }
}
public class Product
{
public Categories Categories { get; set; }
}
我知道,我可以用 Linq 做到这一点 XML,但我想知道我是否可以用 XmlSerializer
做到这一点。
您可以使用 XmlArray
和 XmlArrayItem
属性:
public class Product
{
[XmlArray]
[XmlArrayItem("Id")]
public List<int> Categories { get; set; }
}
我有以下 XML:
<Product>
<Categories>
<Id>1</Id>
<Id>2</Id>
<Id>3</Id>
<Id>4</Id>
<Id>5</Id>
<Id>6</Id>
<Id>7</Id>
<Id>8</Id>
</Categories>
</Product>
我正在使用 XmlSerializer
将其反序列化为 .NET 类型。
我的目标是将其取消实现为:
public class Product
{
public List<int> Categories { get; set; }
}
不幸的是,我没有设法将它反序列化为这种类型(Categories
属性 是空的)。我该怎么做?
我设法做到了,但我对这样的解决方案不满意。
[Serializable]
public class Categories
{
[XmlElement]
public List<Int32> Id { get; set; }
}
public class Product
{
public Categories Categories { get; set; }
}
我知道,我可以用 Linq 做到这一点 XML,但我想知道我是否可以用 XmlSerializer
做到这一点。
您可以使用 XmlArray
和 XmlArrayItem
属性:
public class Product
{
[XmlArray]
[XmlArrayItem("Id")]
public List<int> Categories { get; set; }
}