Announcement

Collapse
No announcement yet.

XML Deserialisieren C#

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • XML Deserialisieren C#

    Hallo zusammen,

    bin ein bisschen ratlos, und hoffe ihr könnt mir weiterhelfen....
    Ich habe eine xml Datei, die ich deserialisieren möchte.
    Teilweise klappt das auch....also mit meiner Test Datei hat es funktioniert...und die sah so aus:

    Meine Spec.cs, die die xml abbildet:
    Code:
        [Serializable]
        [XmlRoot("Spec")]
        public class Spec
        {
            [XmlElement("server")]
            public ServerXml server;
        }
    
        [XmlRoot("server")]
        public class ServerXml
        {
            [XmlAttribute("id")]
            public int id;
            [XmlElement("name")]
            public string name;
            [XmlElement("port")]
            public int port;
            [XmlElement("ip")]
            public string ip;
            [XmlElement("username")]
            public string userName;
            [XmlElement("pass")]
            public string password;
        }

    meine dazugehörige XML:
    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE srv[
    <!ATTLIST server id ID #IMPLIED>
    ]>
    <Spec>
      <server id="1">
        <name>Server Nr. 1</name>
        <port>1234</port>
        <ip>127.0.0.1</ip>
        <username>testuser</username>
        <pass>testpass</pass>
      </server>  
    </Spec>
    mein Code in C#:
    Code:
          XmlSerializer serializer = new XmlSerializer(typeof(Spec));
          Spec setupXml = (Spec)serializer.Deserialize(File.OpenText(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\Test.xml"));
    Jo da funktioniert das alles recht schön, aber nun wollt ich das Ganze auf meine vorhandene XML anpasen und nix geht mehr Habe die xml schon sehr verkürzt, aber selbst da gibt's Probleme...:

    Spec.cs, die die xml abbildet:
    Code:
    [Serializable]
        [XmlRoot("Spec")]
        public class Spec
        {
            public Protocol protocol;
        }
    
        [XmlRoot("Protocol")]
        public class Protocol
        {
            [XmlAttribute("id")]
            public int id;
    
            public Common common;
        }
    
        [XmlRoot("Common")]
        public class Common
        {
            [XmlElement("MaxResponseLen")]
            public int maxResponseLen;
    
            [XmlElement("PositiveResponseOffset")]
            public byte positiveResponseOffset;
    
            [XmlElement("NegativeResponseId")]
            public byte negativeResponseId;
    
            [XmlElement("ResponseHandler")]
            public String responseHandler;
        }
    xml Datei:
    Code:
    <Spec>
      <Protocol id="Testprotocol">			
         <Common>
           <MaxResponseLen>255</MaxResponseLen>
           <PostiveResponseOffset>0x40</PostiveResponseOffset>
           <NegativeResponseId>0x7f</NegativeResponseId>
           <ResponseHandler>rh_protocol.xml</ResponseHandler>
        </Common>
      </Protocol>
    </Spec>
    Der Code zum Deserialisieren ist ja glich geblieben...
    Auf jeden Fall bekomm ich in diesem Fall für mein Objekt "Spec setupXml" immer protocol = null raus...warum???

    Vielleicht sieht von Euch jemand meinen Fehler...wäre echt sehr dankbar.

    Gruß
Working...
X