问题
我正在使用如下结构的 XML,并且遇到问题,因为<value>
标签可以包含多种类型的数据,并且有时可以具有嵌套值。我已经尝试使用抽象类ListItem
并具有几种不同类型的值,但它似乎不起作用,因为 XmlSerializer 要求我以某种方式在不同的密封类之间进行选择 - 这是我做不到的。
<listContainer>
<listItem>
<value>
<boolean>true</boolean>
</value>
</listItem>
<listItem>
<value>1</value>
</listItem>
<listItem>
<value>HAI IM A STRING!</value>
</listItem>
</listContainer>
补充笔记
- 我还尝试编写一个 XmlReaderReader ( http://msdn.microsoft.com/en-us/library/t2abc1zd(v=vs.71).aspx ) 以尝试在可能的情况下深入嵌套标签,但这似乎并不到一个可行的解决方案。
- 我无法更改 XML 的格式,它来自第三方提要。
- XML 文件大约有几个演出。出于性能原因,我正在使用 BufferedStream 并将只转发 XmlReader 传递给默认 XmlSerializer 来执行读取/反序列化。
- 这不是根级别的 XML,它嵌套在其他几个节点中,但我只需要关于如何正确序列化它的建议。
代码
public class listContainer {
[XmlArray(ElementName="listItem")]
[XmlArrayItem(Type=typeof(listItem), ElementName="listItem")]
public List<listItem> listItem { get; set; }
}
public class listItem {
// ... help ...
}