XML Daten in mehrdimensionalen Arrays speichern

bolshi

Mitglied
Hallo,
in einer XML Datei stehen bspw. folgende Daten:

Code:
<server>
     <dbname>dbname_1</dbname>
     <user>user_11</user>
     <pwd>pwd_11</pwd>
     <dbname>dbname_1</dbname>
     <user>user_12</user>
     <pwd>pwd_12</pwd>
     <dbname>dbname_2</dbname>
     <user>user_21</user>
     <pwd>pwd_21</pwd>
     <user>user_22</user>
     <pwd>pwd_22</pwd>
     <dbname>dbname_2</dbname>

Ist es besser die Daten per DOM oder XPATH auszulesen [ Größenordnung max. 5000 ]? Als nächstes die Daten in einem Array von Arrays speichern, dann deserialisieren und die daraus gewonnenen Daten für eine DB-Verbindung nutzen.
Gibt es geeignete Controls in .NET?
Wie erreiche ich, dass dbname, user und pwd in der zweiten Dimension des Arrays landen?

Gruß
Ingo
 
Zuletzt bearbeitet:
Meiner Meinung nach ist der Aufbau des XML-Files "unglücklich"

Wenn du die Möglichkeit hast das zu ändern, dann schau mal das du das in etwa so hinbekommst:

Code:
<server>
    <settings>
     <dbname>dbname_1</dbname>
     <user>user_11</user>
     <pwd>pwd_11</pwd>
    </settings>
    <settings>
     <dbname>dbname_1</dbname>
     <user>user_12</user>
     <pwd>pwd_12</pwd>
    </settings>
    <settings>
     <dbname>dbname_2</dbname>
     <user>user_21</user>
     <pwd>pwd_21</pwd>
    </settings>
</server>

Dann lädst du das XML in ein XML-Document und holst dir dir setting-Nodes per SelectNodes und läufst durch die XmlNodeCollection.

Wenn du das ordentlich verwalten willst dann ohne mehrdimensionale Arrays, dafür aber mit ordentlichen Objekten die du auch de-/serialisieren kannst. Mehr dazu findest du hier schön erklärt: http://www.galileocomputing.de/openbook/visual_csharp/visual_csharp_13_003.htm
 
Ich würde einfach eine XML-Datei nach M4st3r's Schema nehmen und dann folgendermaßen vorgehen:

Code:
        Dim Verbindungsdaten As XElement = XElement.Load(AppDomain.CurrentDomain.BaseDirectory & "\Settings.xml")

        Dim Daten = From s In Verbindungsdaten.Elements _
                    Select s.<dbname>.Value, s.<user>.Value, s.<pwd>.Value

        Dim liste = Daten.ToArray()

Die letzte Zeile ist optional, musst ausprobieren, ob es nicht besser ist, direkt "Daten" zu verwenden...

Analog das Erzeugen eines neuen Eintrags in die XML-Datei:

Code:
        Dim dbname = ""
        Dim user = ""
        Dim pwd = ""

        Verbindungsdaten.Add( _
                           <settings>
                               <dbname><%= dbname %></dbname>
                               <user><%= user %></user>
                               <pwd><%= pwd %></pwd>
                           </settings>)

        Verbindungsdaten.Save(AppDomain.CurrentDomain.BaseDirectory & "\Settings.xml")
 
Zuletzt bearbeitet:
Zurück