我正在使用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然后使用它。但这似乎很尴尬。
答案 0 :(得分:0)
生成的代码对于架构是正确的。 xs:任何mas到xml blob。如果希望生成的代码更具体,则需要将模式从xs:any更改为特定类型。
但是,如果架构不在您的控制之下,这是使用架构的唯一正确方法。您不能假设邮件包含任何特定类型。