2010-11-24 104 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更改爲特定類型。

但是,如果架構不在您的控制之下,這是使用架構的唯一正確方法。您不能認爲消息包含任何特定的類型。

相關問題