Announcement

Collapse
No announcement yet.

app.Config eigene Tags?

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

  • app.Config eigene Tags?

    Hallo zusammen,

    in der app.config kann man ja locker eigene Configurationen erstellen.
    Was ich ejtz aber brauchte ist ne eigene Section, z.b.

    <P>&lt;addPool nr="1" poolName="blubber.mdb" /&gt;&nbsp;</P>

    Wie kann ich solch einen Eintrag aus der Config Datei auslesen?
    Muss ich direkt über XML gehen oder geht es auch einfacher wie z.b. mit was ähliches wie die System.Configuration.....

    Mein Kompletter Code:

    <P>&lt;configuration&gt;<BR>
    &nbsp;&nbsp;&lt;appSettings&gt;<BR>
    &nbsp;&nbsp;&nbsp;&nbsp;&lt;add key="dbPath" value="\datenbank" /&gt;<BR>
    &nbsp;&nbsp;&lt;/appSettings&gt;<BR>
    &nbsp;&nbsp;&lt;dbPool&gt;<BR>
    &nbsp;&nbsp;&nbsp;&nbsp;&lt;aPool nr="1" poolName="blubber.mdb" /&gt;<BR>
    &nbsp;&nbsp;&nbsp;&nbsp;&lt;aPool nr="1" poolName="blabber.mdb" /&gt;<BR>
    &nbsp;&nbsp;&lt;/dbPool&gt;<BR>
    &lt;/configuration&gt;</P>

    Warum ich das möchte ist einfach erklärt, der Benutzer kann mehrer Datenbanken haben, man könnte sagen mandanten ähnlich, diese sollten dann in einer Liste gezeigt werden und jenachdem welche db der Benutzer braucht kann er sie wählen.
    ICh weiss, theoretisch könnte man es auch mit einer Datenbank machen und diese Dann auslesen, denoch denke ich das es eventuell einfach gehen würde mit dem Config file. Und ich habe mich schon lange gefragt wie es am einfachsten wäre solche informationen raus zu holen.

    Grüsschen Andreas

  • #2
    Hallo,

    &gt;theoretisch könnte man es auch mit einer Datenbank machen

    praktisch auch - denn DataSet kann direkt XML-Dateien lesen und schreiben, so dass dieser Weg auf jeden Fall einfacher ist als das manuelle Hantieren mit der .config-Datei.

    &gt;..Muss ich direkt über XML gehen ..

    Ja. Das Auslesen der Daten aus der .config ist einfach, da ConfigurationSettings.AppSettings den Zugriff vordefiniert; wenn man beim Standard-Zweig bleibt:
    <pre>
    string sConfigValue1 = ConfigurationSettings.AppSettings["ConfigValue1"];
    </pre>
    Beim Schreiben wird zuerst in der ChildNodes-Kollektion nach dem Eintrag add gesucht (siehe Zeile oben in der .config-Datei). Wenn diese "Zeile" gefunden wurde, sucht das Programm nach den Attributen - sobald das Attribut "value" gefunden wurde (siehe oben in der .config), kann der Wert dieses Attributes direkt geändert werden . Anstelle von "value" könnte man hier auch nach "key" suchen, um einen bestimmten Key-Wert zu prüfen:

    <pre>
    using System.Configuration;
    using System.Xml;

    private void CheckNode(XmlNode aNode)
    {
    if (aNode.HasChildNodes)
    {
    foreach (XmlNode aChildNode in aNode.ChildNodes)
    {
    if (aChildNode.Name == "add")
    {
    foreach (XmlAttribute aXA in aChildNode.Attributes)
    {
    if (aXA.Name == "value")
    {
    aXA.Value = textBox1.Text;
    }
    }
    }
    CheckNode(aChildNode);
    }
    }
    }

    private void button4_Click(object sender, System.EventArgs e)
    {
    XmlDocument aXD = new XmlDocument();
    aXD.Load("CSharpAppSettings.exe.config");
    CheckNode(aXD.DocumentElement);
    aXD.Save("CSharpAppSettings.exe.config");
    }
    </pre&gt

    Comment


    • #3
      Morgen,

      thx :-)
      das hat mir mal gerade in der entscheidung geholfen das ich doch alle Kofigurationen innerhalb einer Config DB ablegen werde.
      Ich habe soviele einstellungen wo es sich demfall lohnen wird.

      THX und Grüsschen Andrea

      Comment

      Working...
      X