0

所以这可能是一个随机请求,但任何帮助都会得到很大的帮助!我正在处理一个类似这样的 XML 文档......

<images>
    <image>
        <url>
            http://www.someUrl.com
        </url>
    </image>

    <bonusimage>
        <url>
            http://www.someOtherUrl.com
        </url>
    </bonusimage>
</images>

我试图做的是以下内容:

[XmlArray("images")]
[XmlElementAttribute("image", Type = typeof(CustomImageClass), IsNullable = false)]
[XmlElementAttribute("bonusimage", Type = typeof(CustomImageClass), IsNullable = false)]
[XmlChoiceIdentifierAttribute("ItemsElementName")]
public CustomImageClass[] items;

[XmlElementAttribute(IsNullable = false)]
[XmlIgnoreAttribute()]
public ImageType[] ItemsElementName;

我还定义了一个枚举,如下所示:

[XmlType(IncludeInSchema = false)]
public enum ImageType
{
    [XmlEnumAttribute("image")]
    CustomImage,
    BonusImage,
}

我试图遵循描述我的问题的以下网页上的第二种情况。

http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlchoiceidentifierattribute(v=vs.95).aspx

但是运行此代码会导致以下错误:

为成员“项目”指定的不明确类型。项目 'bonusimage' 和 'image' 具有相同的类型。请考虑将 XmlElementAttribute 与 XmlChoiceIdentifierAttribute 一起使用。

很抱歉这篇庞大的帖子,但我已经把头撞在墙上一段时间了,想提供尽可能多的信息!我想我需要第二双眼睛来帮助我看看哪里出错了。

再次感谢!

4

1 回答 1

0

好的,感谢您的输入,但不幸的是我需要保持对象的顺序。所以这就是我发现的解决方案:

[XmlArray("images")]
[XmlElementAttribute(Type = typeof(Bonusimage))]
[XmlElementAttribute(Type = typeof(CustomImageClass))]
public CustomImageClass[] items;


[XmlType("bonusimage")]
public class Bonusimage: CustomImageClass
{

}

[XmlType("image")]
public class CustomImageClass
{

}
于 2013-07-25T09:56:56.820 回答