【发布时间】:2016-12-02 08:12:04
【问题描述】:
我在这里有一个奇怪的 XML 设置:我需要与第三方交互,他们使用的 XML 布局超出了我的控制 - 没有机会更改任何内容...
在更大的 XML 范围内,我发现自己需要序列化(然后还反序列化)一个项目列表(用于移动设备),这些项目定义为具有 Type 和 Number 属性(两者字符串)。所以这将是这样的:
public class SerialNumber
{
public string Type { get; set; }
public string Number { get; set; }
}
这通常会将List<SerialNumber> SerialNumbers序列化为
<SerialNumbers>
<SerialNumber>
<Type>SN</Type>
<Number>CBS583ABC123</Number>
</SerialNumber>
<SerialNumber>
<Type>IMEI</Type>
<Number>35-924106-659945-4</Number>
</SerialNumber>
</SerialNumbers>
但是,就我而言,我需要发送这个 XML:
<SerialNumbers>
<Type>SN</Type>
<Number>CBS583ABC123</Number>
<Type>IMEI</Type>
<Number>35-924106-659945-4</Number>
</SerialNumbers>
所以基本上,列表元素需要被省略——我只需要一个容器<SerialNumbers>,然后对于列表中的每个条目,我只需要序列化出Type 和Number 子元素。
如何在 .NET 中使用 XmlSerializer 轻松做到这一点?
我尝试使用
[XmlRoot(ElementName="")]
public class SerialNumber
或
[XmlArray]
[XmlArrayItem(ElementName = "")]
public List<SerialNumber> SerialNumbers { get; set; }
但这些都不起作用 - 我仍然使用 <SerialNumbers> 容器内的 <SerialNumber> 元素获得我的完整序列化...
是否有一个简单的技巧来实现我正在寻找的东西?我宁愿不去低级并开始手动将我的 XML 合并在一起....
谢谢!
【问题讨论】:
-
这里有一个解决方案:Xml Sequence deserialization with RestSharp。问题是针对restsharp,但答案使用
XmlSerializer。
标签: c# xml xml-serialization