Deserialisieren von Listen mit gleichem ElementName



  • Hallo zusammen,

    ich habe ein Problem beim Deserialisieren folgendes XML Ausschnittes:

    <fork>
    			<process>
    				<operation id="00000001-0001-0001-0000-000000000001" refWebserviceMethod="00000001-0001-0001-0000-000000000000"/>
    			</process>
    			<process>
    				<operation id="00000001-0001-0001-0000-000000000002" refWebserviceMethod="00000001-0001-0001-0000-000000000000"/>
    			</process>
    		</fork>
    

    mit folgender Methode:

    private processForkType deserialize(string xml)
            {
                StringReader xmlWriter = new StringReader(xml);
                XmlSerializer xmlSerializer = new XmlSerializer(typeOf(processForkType));
                return xmlSerializer.Deserialize(xmlWriter);
            }
    

    Hier die Klasse für den Deserializer:

    public partial class processForkType : object, System.ComponentModel.INotifyPropertyChanged {
    
        private object[] processField;
    
        private object[] process1Field;
    
        /// <remarks/>
        [System.Xml.Serialization.XmlArrayAttribute(Order=0)]
        [System.Xml.Serialization.XmlArrayItemAttribute("fork", typeof(processForkType), IsNullable=false)]
        [System.Xml.Serialization.XmlArrayItemAttribute("operation", typeof(processTypeOperation), IsNullable=false)]
        public object[] process {
            get {
                return this.processField;
            }
            set {
                this.processField = value;
                this.RaisePropertyChanged("process");
            }
        }
    
        /// <remarks/>
        [System.Xml.Serialization.XmlArrayAttribute("process", Order=1)]
        [System.Xml.Serialization.XmlArrayItemAttribute("fork", typeof(processForkType), IsNullable=false)]
        [System.Xml.Serialization.XmlArrayItemAttribute("operation", typeof(processTypeOperation), IsNullable=false)]
        public object[] process1 {
            get {
                return this.process1Field;
            }
            set {
                this.process1Field = value;
                this.RaisePropertyChanged("process1");
            }
        }
    
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
    
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    

    Das Resultat ist, dass beide "operation"-Elemente in das process Field deserialisiert werden. das process1 Field ist leer.

    Die processForkType Klasse wurde mit dem Visual Studio xsd-Tool erzeugt.

    Hat jemand eine Idee was ich da machen kann.

    Mfg
    roskas


Anmelden zum Antworten