2010-11-24 67 views
0

我正在使用svcutil工具为第三方wdsl生成一组代理。其中一个类型,在关联的XSD文件中定义的使用XS:任何元素:Svcutil.exe为xsd生成XmlElement属性:模式中的任何元素

<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

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

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

相关问题