Как использовать сложные типы с xs: any / ## any и смешанный код, созданный с помощью инструмента XSD

У меня есть следующий сложный тип в моей схеме XML:

<xs:complexType name="Widget" mixed="true">
    <xs:sequence>
        <xs:any namespace="##any" processContents="skip" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
</xs:complexType>

Элемент в производном XML может содержать строку или может содержать хорошо сформированный XML, следовательно, атрибут mixed является истинным.

Когда я запускаю это с помощью .NET XSD Tool, я получаю следующий код генерации:

public partial class Widget{

    private System.Xml.XmlNode[] anyField;

    /// <remarks/>
    [System.Xml.Serialization.XmlTextAttribute()]
    [System.Xml.Serialization.XmlAnyElementAttribute()]
    public System.Xml.XmlNode[] Any {
        get {
            return this.anyField;
        }
        set {
            this.anyField = value;
        }
    }
}

У меня вопрос в том, что я не совсем уверен, как я должен это использовать. В конечном итоге мне нужно иметь возможность установить значение виджета либо на:

<widget>Hello World!</widget>

, либо на

<widget>
  <foo>Hello World</foo>
</widget>

Оба из которых проверяют против схемы

7
задан MrEyes 11 February 2011 в 20:50
поделиться