Svcutil.exe为xsd:schema中的任何元素生成XmlElement属性

时间:2010-11-24 14:03:03

标签: wcf xsd svcutil.exe

我正在使用svcutil工具为第三方wdsl生成一组代理。在关联的XSD文件中定义的其中一种类型使用xs:any元素:

<xs:any namespace="##any" processContents="lax"/>

生成的代码使用XmlElement类型的属性来表示:

[System.Xml.Serialization.XmlAnyElementAttribute(Order=0)]
public System.Xml.XmlElement Any
{
    get
    {
        return this.anyField;
    }
    set
    {
        this.anyField = value;
    }
}

该字段实际需要的是该工具也生成的强类型对象之一。

我的问题是:是否有一种简单/推荐的方法可以从对象实例获取XmlElement实例?

我能想到的是将对象图序列化为XmlDocument然后使用它。但这似乎很尴尬。

1 个答案:

答案 0 :(得分:0)

生成的代码对于架构是正确的。 xs:任何mas到xml blob。如果希望生成的代码更具体,则需要将模式从xs:any更改为特定类型。

但是,如果架构不在您的控制之下,这是使用架构的唯一正确方法。您不能假设邮件包含任何特定类型。