Announcement

Collapse
No announcement yet.

XML auslesen

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

  • XML auslesen

    Hi,

    ich beschäftige mich erst seit kurzem mit XML.
    Erst mal mein XML Dokument:
    Code:
    <?xml version="1.0"?>
    <DATENBANK>
    <ACCOUNT>
    <BEZEICHNUNG>Masterpasswort</BEZEICHNUNG>
    <LOGIN>Seppel</LOGIN>
    <PASSWORT>123</PASSWORT>
    <ADRESSE>root</ADRESSE>
    </ACCOUNT>
    
    <ACCOUNT>
    <BEZEICHNUNG>Rapidshare</BEZEICHNUNG>
    <LOGIN>Test</LOGIN>
    <PASSWORT>test</PASSWORT>
    <ADRESSE>http://rapidshare.com</ADRESSE>
    </ACCOUNT>
    
    <ACCOUNT>
    <BEZEICHNUNG>Googlemail</BEZEICHNUNG>
    <LOGIN>Test</LOGIN>
    <PASSWORT>test</PASSWORT>
    <ADRESSE>http://googlemail.com</ADRESSE>
    </ACCOUNT>
    </DATENBANK>
    Es ist jetzt nur Testweise so, es kommen noch andere Einträge oder andere Tags dazu... bin mir noch net zu 100% sicher!

    Ich bin gerade dabei das Dokument auszulesen.
    BZW. folgendes habe ich vor:
    Die Bezeichnung auszulesen und in eine listbox speichern.
    Dabei möchte ich aber den ersten Eintrag weglassen.
    Den möchte ich wiederrum einzeln auslesen und z.b. in einem String oder einer Textbox speichern.

    Leider finde ich kein geeignetes Tutorial im Netz und bin erst später daheim, so dass ich hoffentlich in einem Buch etwas finde und wollte daher euch fragen

    Mir würde schon reichen, wie ich auf die einzelnen Tags zugreifen kann.
    Denn wenn ich ein Element in der Listbox anklicke will ich analog dazu die anderen Werde inkl. dem Bezeichner in textboxen ausgeben, um die dann zu ändern.

    Wäre nice wenn mir jemand dabei helfen könnte!

    mfg

  • #2
    Es gibt unterschiedliche Möglichkeiten das zu realisieren. Du kannst Dir das XML File in ein DataSet lesen und die Daten daraus auslesen.
    Du kannst das XML File mit einem XMLReader auslesen.

    Ausserdem würde ich die ausgelesenen Daten nicht direkt in ein Control (Listbox) speichern, sondern mir Datenklassen bauen die obige Daten in Deinem Programm repräsentieren.
    Der Rest wäre ganz einfach über DataBinding zu realisieren.

    Wenn Du unter diesen Stichwörtern im INet suchst findest Du bestimmt jede Menge Artikel

    Comment


    • #3
      thx werd es gleich mal probieren.

      Comment


      • #4
        So hab jetzt ein bisschen herumgespielt.

        int akt = Form1.getaktuell();



        GC.Collect();

        String path = @System.Threading.Thread.GetDomain().BaseDirectory + "/data" + akt + ".xml";


        try {

        XmlDataDocument xmlDatadoc = new XmlDataDocument();

        xmlDatadoc.DataSet.ReadXml(path);

        DataSet ds = new DataSet("Datenbank");

        ds = xmlDatadoc.DataSet;



        dataGridView1.DataSource = ds.DefaultViewManager;

        dataGridView1.DataMember = "ACCOUNT";


        }
        catch
        {
        }
        ;
        Das XML Dokument könnt ihr oben sehen
        Jedenfalls probiere ich jetzt schon länger rum das auslesen anzupassen.
        Ich will z.B. nur den Bereich "BEZEICHNUNG" auslesen und will dann beim Klick auf einer der Bezeichner, das diese in Labels oder Edit Felder geladen werden
        Ich hab ein Beispiel gesehen, wo das ganze über SQL gehandhabt wird, leider finde ich die Seite nicht mehr und in der Praxis kriege ich es nicht hin...

        Wäre für Hilfe dankbar.

        Comment


        • #5
          Hallo,

          ist es möglich dass du Linq to Xml verwenden kannst? Falls ja werden wir in dieser Richtung schon die Lösung finden


          mfG Gü
          "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

          Comment


          • #6
            Wenn du nicht explizit direkt mit XML hantieren willst sondern einfach nur in XML serialisieren/deserialisieren möchtest so würde ich einfach ein passende Klasse mit der benötigten Daten erstellen und dann per XMLSerializer serialisieren/deserialisieren.

            Comment


            • #7
              Hallo,

              da Ralf auch einen guten Vorschlag gemacht hat greife ich Jürgen Thomas' Vorschlag auf

              Du kannst auch DataTabel mit ReadXml verwenden.

              Es gibt also mehrere Möglichkeiten die zum Ziel führen.

              Wegen
              Denn wenn ich ein Element in der Listbox anklicke will ich analog dazu die anderen Werde inkl. dem Bezeichner in textboxen ausgeben, um die dann zu ändern.
              Wäre die Serialisierungs-Variante (also Ralfs Vorschlag oder oben) zu bevorzugen, denn somit kannst du die Daten an die UI binden. Das erspart viel Zeit.
              Persönlich würde ich da dann auch Klassen generieren (lassen) und mit dem XmlSerializer die Daten einlesen.

              mfG Gü
              "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

              Comment

              Working...
              X