Autor Beitrag
bd.cole
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 46

Win XP, Vista
C# (VS 2005)
BeitragVerfasst: Di 28.08.07 09:30 
Hallo ich lese aus textboxen text für meine xml datei aus. klappt auch alles prima. Wird auch dort rein geschrieben. Aber wie geb ich die Form an, in der er schreiben soll, also würde es gerne verschachteln, dass es z. B. so aussieht:
ausblenden XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
- <blub>
      <bla>aa</bla
      <bla2>####</bla2
-     <Adresse>
-         <MeineAdresse>
              <str>xxxxxx</str
              <hausnr>20</hausnr
              <plz>987087</plz
              <ka>99</ka
          </MeineAdresse>
      </Adresse>
  </blub>


Habe eine Serlializationclass. Ich würde gerne in dieser schon die Form festlegen und später nur noch den text aus den textboxen dazufügen. Meine Klasse:
ausblenden 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:
private string bla = String.Empty;
private string bla2 = String.Empty;
private string str = String.Empty;
private string hausnr = String.Empty;
private string plz = String.Empty;
private string ka = String.Empty;

            public string Bla
            {
                get { return bla; }
                set { bla = value; }
            }
            public string Bla2
            {
                get { return bla2; }
                set { bla2 = value; }
            }
            public string Str
            {
                get { return str; }
                set { str = value; }
            }
            public string Hausnr
            {
                get { return hausnr; }
                set { hausnr = value; }
            }
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Di 28.08.07 14:54 
Jedes Element repräsentiert ein Objekt. Um Daten zu verschachteln, musst du also diese in eine eigene Klasse packen, die du dann in der "Root-Klasse" als Property benutzt.

Das hier könnte dir helfen - entweder direkt oder als Anregung und Code-Beispiel: blogs.msdn.com/mwink...rializable-type.aspx
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Di 28.08.07 14:56 
Wenn Du den XML-Serializer verwenden willst, musst Du die Struktur mit Deinem Klassen nachbilden.

Also wenn Du das hier hast:

ausblenden XML-Daten
1:
2:
3:
4:
<MeineAdresse>
    <Strasse>...</Strasse>
    <PLZ>...</PLZ>
</MeineAdresse>


musst Du Deine Klasse so bauen:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
public class MeineAdresse {
  private string strasse;
  public string Strasse {
    get {return strasse;}
    set {strasse = value;}
  }
  
  private string plz;
  public string PLZ{
    get {return plz;}
    set {plz= value;}
  }


Wenn Du weitere Verschachtelungen haben willst, musst Du Properties anlegen, die Instanzen weiterer Klassen sind:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
public class Person {
  private string name;
  public string Name{
    get {return name;}
    set {name= value;}
  }

  private MeineAdresse adresse;
  public MeineAdresse Adresse{
    get {return adresse;}
    set {adresse= value;}
  }
}


ergibt:
ausblenden XML-Daten
1:
2:
3:
4:
5:
6:
7:
<Person>
  <Name>...</Name>
  <Adresse>
    <Strasse>...</Strasse>
    <PLZ>...</PLZ>
  </Adresse>
</Person>



P.s.: Ich weiß, Khabarakh war schneller, aber ich hab mehr Infos drin ;-)

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
bd.cole Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 46

Win XP, Vista
C# (VS 2005)
BeitragVerfasst: Mi 29.08.07 08:19 
erstmal Danke. Hab noch ein Problem. Ich hatte mir ein Object erstellt:

ausblenden C#-Quelltext
1:
private Person serObj = new Person();					


Ich habe dann den eingegebenen Text einer textbox gespeichert:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
            for (int i = 3; i < 7; i++)
                eingabe = eingabe + maskedTextBox16.Text[i];
            serObj.strasse = eingabe;
            XmlTextWriter xmlWriter = new XmlTextWriter(this.xmlMeldungen, Encoding.UTF8);
            XmlSerializer serializer = new XmlSerializer(typeof(SerializationClass));
            serializer.Serialize(xmlWriter, serObj);
            xmlWriter.Close();

Das geht jetzt natürlcih nicht mehr. Wie speicher ich das jetzt in dem Objekt? Muss ja irgendwie serObj.Adresse.strasse oder so? Es kommt der Fehler: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Mi 29.08.07 09:35 
user profile iconbd.cole hat folgendes geschrieben:
Es kommt der Fehler: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.

Bei den vorherigen Ratschlägen wurde gesagt:
user profile iconChristian S. hat folgendes geschrieben:
Wenn Du weitere Verschachtelungen haben willst, musst Du Properties anlegen, die Instanzen weiterer Klassen sind:

Deine Fehlermeldung lässt mich vermuten, dass im Konstruktor von Person das Erzeugen der "Instanzen weiterer Klassen" fehlt.

Gruß Jürgen
bd.cole Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 46

Win XP, Vista
C# (VS 2005)
BeitragVerfasst: Mi 29.08.07 15:37 
Lesen Hilft, Danke. Hat funktioniert. Geht nun alles
bd.cole Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 46

Win XP, Vista
C# (VS 2005)
BeitragVerfasst: Do 30.08.07 10:40 
Ok das mit dem Anlegen der XML hat Prima geklappt, aber wie kann ich jetzt einzelne Strings wieder auslesen aus der Datei? Z. B. jetzt strasse?
bd.cole Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 46

Win XP, Vista
C# (VS 2005)
BeitragVerfasst: Do 30.08.07 10:47 
Ah ok geht genauso nur mit Xmlreader anstat writer