【发布时间】:2009-08-25 00:16:57
【问题描述】:
我收到了一些“XML”文件,它们的架构并不完全正确(我认为这是问题所在),并且无法更改生成它们的医疗设备以生成易于解析的 XML。 (通过如此诱人的小修改(在 Image 条目周围额外包装 Images 标记)读取这些文件将是微不足道的——这不是 XML 的意义吗?)
基本上我被困在这里。 XML 如下所示:
<Series>
<Metadata1>foo</Metadata1>
<Metadata2>bar</Metadata2>
...
<Image>...</Image>
<Image>...</Image>
...
</Series>
(可以有任意数量的图像,但可能的元数据标签都是已知的)。我的代码如下所示:
public class Image { ... }
public class Series : List<Image>
{
public Series() { }
public string Metadata1;
public string Metadata2;
...
}
当我这样运行时:
XmlSerializer xs = new XmlSerializer(typeof(Series));
StreamReader sr = new StreamReader(path);
Series series = (Series)xs.Deserialize(sr);
sr.Close();
图像对象列表正确读入系列对象,但没有读取 Metadata1/2/etc 字段(事实上,在调试器中浏览对象会显示“原始视图”类字段内的所有元数据字段)。
当我更改代码时:
public class Series // // removed this : List<Image>
{
public Series() { }
public string Metadata1;
public string Metadata2;
...
}
然后在文件上运行阅读器,我得到一个带有 Metadata1/2/etc 的系列对象。完美填充但没有读取图像数据(显然)。
如何同时解析 Metadata1/2/etc.以及痛苦的临时代码最少的一系列图像?
我是否必须编写一些自定义(痛苦?容易?)ReadXML 方法来实现 IXMLSeralizable?
我不太关心对象的布局,因为我使用这些 C# 类的软件非常灵活:
List图像会很好,或者元数据可能包含在某个对象中,无论如何......Images;
【问题讨论】:
标签: .net xml serialization xml-serialization c#-2.0