Entwickler-Ecke

IO, XML und Registry - XML Klasse


bd.cole - Mi 19.09.07 10:10
Titel: XML Klasse
Hallo habe schonmal eine Klasse geschrieben mit der ich XML abspeichere, bin aber noch nicht so gut darin. Meine Klasse sah so aus:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
public class VerbindungenXML  
        {     
            verbindung _verbindung = new verbindung();  
                public verbindung Verbindung  
                {  
                    get {return _verbindung;}  
                    set {_verbindung = value; }  
                }  
            public VerbindungenXML(){}  
        }  
        public class verbindung  
        {  
            string startpoint = String.Empty;  
            string endpoint = String.Empty;  
            public string StartPoint  
            {  
                get {return startpoint;}  
                set { startpoint = value;}  
            }  
            public string EndPoint  
            {  
                get {return endpoint;}  
                set { endpoint = value;}  
            }  
            public verbindung(){}  
        }


Jetzt muss ich eine XML Datei schreiben die so aussieht:

XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
<?xml version="1.0" encoding="UTF-8" ?> 
<!-- 
-->

- <LIBRARY>
 - <ENTITY name="PlanetErde">
     <LAND id="Deutschland" /> 
   - <ENTITY name="Stefan">
       <IDENTITY id="Stf" /> 
       <STADT id="Hamburg" /> 
       <ADRESS type="normal" strasse="Blumenweg" hausrn="55" briefkasten="kasten" /> 
     </ENTITY>
   - <ENTITY name="paul">
       <IDENTITY id="pal" /> 
       <STADT id="Berlin" /> 
       <ADRESS type="normal" strasse="Baumgarten" hausnr="25" briefkasten="normal" /> 
     </ENTITY>
  </ENTITY>
</LIBRARY>

Wie stell ich das jetzt an, kann mir jemand helfen? Also es sollte wieder mit einer solchen Klasse gelöste werden. Thx
Mfg Cole


bd.cole - Mi 19.09.07 11:11

Hallo bin schon ein bisschen weiter gekommen. Bis jetzt hab ich:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
[XmlRoot]
        public class LIBRARY
        {
            public LIBRARY()
            {
                ENTITY = new List<ENTITY>();
            }

            public List<ENTITY> ENTITY;

            [XmlAttribute]
            public string name;
        }
        public class ENTITY
        {

            public ENTITY(string name)
            {
                Name = name;
            }
            public ENTITY() { }
            [XmlAttribute]
            public string Name;
        }

XML Datei bis jetzt:

XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
 <?xml version="1.0" encoding="utf-8" ?> 
- <LIBRARY xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  - <ENTITY>
    - <ENTITY Name="00">

      </ENTITY>
    - <ENTITY Name="test">
      </ENTITY>
    </ENTITY>
  </LIBRARY>


Aber weiß noch nicht wie ich bei dem ersten ENTITY jetzt da noch das name hin bekomme und dann vorallem die weiteren unterpunkte wie Land id usw


Kha - Mi 19.09.07 18:30

Lasse dir doch einmal von XSD.exe den Code erzeugen. Ob er hässlich genug ist oder du doch lieber deinen eigenen schreibst, kannst du danach immer noch entscheiden, du hast aber auf jeden Fall eine funktionierende Vorlage (die mit einem guten Schema sogar gar nicht ganz so hässlich wäre).


bd.cole - Do 20.09.07 11:18

Hi ich hab schon das meiste geschafft, mal einen Teil aus meinem Code

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
public class LIBRARY
        {
            [XmlArray]
            public List<ENTITY> ENTITY;
            public LIBRARY()
            {
                ENTITY = new List<ENTITY>();
            }
        }
        public class ENTITY
        {
            
            public ENTITY(string Name)
            {
                name = Name;
            }
            public ENTITY() { }
            
            Identity identity = new Identity();
            public Identity IDENTITY
            {
                get { return identity; }
                set { identity = value; }
            }
            Stadt stadt= new Stadt();
            public Geometry Stadt
            {
                get { return stadt; }
                set { stadt= value; }
            }
       }
       ......

Jetzt sieht die XML dann ca so aus:

XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
- <LIBRARY>  
 - <ENTITY>    ***
   - <ENTITY name="Stefan">  
       <IDENTITY id="Stf" />   
       <STADT id="Hamburg" />   
     </ENTITY>  
   - <ENTITY name="paul">  
       <IDENTITY id="pal" />   
       <STADT id="Berlin" />   
     </ENTITY>  
  </ENTITY>  
</LIBRARY>

Jetzt hab ich noch ein Problem wie bekomm ich bei dem ersten ENTITY (Zeile mit *** makiert) noch so ein Attribute hin, dass es auch so aussieht: <ENTITY name= "blub">
Bekomm das nicht hin, einer eine Idee? Hab ich nen falschen Ansatz?


Christian S. - Sa 29.09.07 16:29

Schau Dir dazu mal das Attribut XmlAttributeAttribute (ja, zweimal "Attribute") an.