XML Datei Auslesen


TheBlack0

Mitglied
Hallo liebe community :D

Ich bin neu hier und arbeite seit 1 Woche bei einer neuen Firma und bin momentan dabei, alles mögliche zu lernen(PHP/HTML/XML/C#)

Ich wurde vor die Aufgabe gesetzt, folgendes XML Dokument einzulesen und bestimmte werte einzuspeichern(mehr dazu später)

Datei : config.xml
XML:
<?xml version="1.0" encoding="utf-8"?>

<root>
	<settings>
		<ErrorLog>TRUE</ErrorLog>
	</settings>
	<Ping>
		<type type='Webseite'>
			<IP>google.de</IP>
		</type>
		<type type='Server'>
			<IP>srv-2003</IP>
			<IP>srv-2003-sql</IP>
			<IP>srv-2003-ts</IP>
			<IP>srv-2003-2</IP>
			<IP>srv-2003-r2-pm1</IP>
			<IP>srv-2003-Gofos</IP>
			<IP>Bartender-ms-1</IP>
			<IP>192.168.138.9</IP>
			<IP>PD0043</IP>
		</type>
		<type type='VPN'>
			<IP>192.168.48.8</IP>
			<IP>172.29.119.10</IP>
			<IP>192.168.130.107</IP>
		</type>
		<type type='PCs'>
			<IP>PC10453</IP>
			<IP>PD0032</IP>
			<IP>DFM0011</IP>
			<IP>PC10501</IP>
			<IP>PC10471</IP>
			<IP>DFM0013</IP>
			<IP>PC10455</IP>
			<IP>PC10475</IP>
		</type>
	</Ping>
</root>
So, und nun will ich es folgendermaßen machen:

Ich habe ein C# Programm, das diese IPs immer anpingt, je nach dem Interval den ich angegeben habe.
Ich will nun die Funktion hinzufügen, das man über dieses Programm noch IP's hinzufügen kann, und ich habe eine kleine Dropdown box dafür gemacht.
Ich möchte nun filtern, in welcher Zeile der typ 'lable' ist, so das ich zu dem jeweiligen Lable immer noch bestimmte Sachen hinzufügen kann

Hoffe auf Antwort und danke im voraus :D

MFG


EDIT:
Mein bisheriger Fortschritt (Wird immer geupdatet wenn es klappt ;D)
Elemente, die hierfür verwendet werden:
-comboBox1 -Items[Internet, Server, VPN, PC]
-textBox1 -Eingabe der IP
-button1 -Einschreiben in das XML Dokument
C#:
        private void button1_Click(object sender, EventArgs e)
        {
            if (comboBox1.SelectedIndex > -1 && textBox1.Text != "")
            {
                XmlDocument ipxml = new XmlDocument();
                ipxml.Load("config.xml");
                XmlNodeList lablelist = ipxml.GetElementsByTagName("lable");
                if (comboBox1.SelectedIndex == 0)
                {

                }
                if (comboBox1.SelectedIndex == 1)
                {

                }
                if (comboBox1.SelectedIndex == 2)
                {

                }
                if (comboBox1.SelectedIndex == 3)
                {

                }
            }
        }

Bild :
Anhang anzeigen 62723
 
Zuletzt bearbeitet von einem Moderator:

Spyke

Premium-User
Ich glaube so direkt den ausgangspost zu editieren ist nicht so gut.
Am Anfang hattest du noch das Element IP mit dem Attribute "type" und entsprechendem Wert "label".
Irgendwas mit label sehe ich jetzt oben in dem XML nicht mehr.

Zumindest ein Element vom namen "label" sehe ich nicht und in deiner erst Version war es der Wert des Attributes "type".

Aber zumindest die XML Struktur ist jetzt aufgeräumter ;)
 

Mohag

Mitglied
Für die die es nicht wissen.

Im .NET gibt es im Bereich System.Data die Möglichkeit ein DataSet zu erstellen.

Die Daten aus diesem ds kann man dann super per ds.WriteXml("Pfad.xml") schreiben. und dazu auch noch den Aufbau, ds.WriteXmlSchema("Pfad.xsd").
Diese können dann super beim Neustart wieder geladen werden. Selber gebastelte, nicht Seriealisierte xml inputs können einem ganz schnell mal den Tag versauen, und wenn ich gerade anfange etwas lernen zu wollen dann doch lieber richtig.

Noch ein Tip, System.Data.DataSetExtensions bietet noch einemal X Möglichkeiten mit Daten umzugehen.

MfG
 

ksk

Erfahrenes Mitglied
Hy,
also wie schon erwähnt gibt es ein DataSet mit der es sehr einfach ist eine XML Datei zu schreiben und zu lesen.
Mit DataSet.WriteXML schreibst die XML Datei und mit DataSet.ReadXML ließt die gesamte Datei
wieder ein, samt allen Tabellen, Spalten usw.
Dazu muss noch gesagt werden das der Aufbau der XML Datei konform, wohlgeformt usw. sein muss.

Falls du jedoch irgendeine beliebige XML Datei lesen willst dann kannst die Zeilen und Attributes einzeln durchgehen.
Bsp: Aufbau der XML-Datei
Code:
<?xml version="1.0" standalone="yes"?>
<appConfig>
  <appSettings>
  <allowSave>false</allowSave>
  <allowChange>yes</allowChange>
  <allowDelete>false</allowDelete>
  <allowInput>true</allowInput>
  <allowViewer>true</allowViewer>
  </appSettings>
</appConfig>
Und zum Auslesen, hier ein Einfacher Ansatz
Code:
private void loadXML()
{
  List<string> changed = new List<string>();
  if (System.IO.File.Exists(configPath))
  {
      listBox1.Items.Clear();
      XmlDocument xd = getControlNameFile();
      foreach (XmlElement lang in xd.DocumentElement)
      {
          if (lang.HasChildNodes)
          {
              foreach (XmlElement txtI in lang.ChildNodes)
              {
                  if (txtI.Name == "allowChange")
                  {
                      changed.Add(txtI.InnerText);
                  }
              }
          }
      }
  }
  foreach (string s in changed) { listBox1.Items.Add(s); }
}
Lg
ksk