Laden...

XML Datei auslesen geht nicht?!

Erstellt von math55 vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.856 Views
math55 Themenstarter:in
314 Beiträge seit 2007
vor 16 Jahren
XML Datei auslesen geht nicht?!

hi, ich habe eine xml datei dieser art:

_
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="dbs" value="12345" />
</appSettings>
</configuration>_

diese versuche ich so auszulesen:


XmlTextReader tr = new XmlTextReader(file);			
			
			while (tr.Read()) 
			{
				switch (tr.NodeType) 
				{
					case XmlNodeType.Element: // Der Knoten ist ein Element.
						Console.Write("<" + tr.Name);
						Console.WriteLine(">");
						break;
					case XmlNodeType.Text: //Anzeigen des Textes in jedem Element.
						Console.WriteLine (tr.Value);
						break;
					case XmlNodeType.EndElement: //Anzeigen des Endes des Elements.
						Console.Write("</" + tr.Name);
						Console.WriteLine(">");
						break;
				}
			}

allerdings komme ich nicht an den value von add ran..geht das irgendwie? das ganze soll dann in einem hashtable landen.

danke🙂

1.373 Beiträge seit 2004
vor 16 Jahren

Hallo,

AttributeCount und MoveToAttribute vom XmlTextReader sind deine Freunde. Schau dir die Doku zum XmlTextReader an. Dort findest du auch ein Beispiel mit Attributen.

Viele Grüße,
Andre

S
31 Beiträge seit 2006
vor 16 Jahren

Hallo

Hab das ganze mal so in etwa verwendet.


XmlDocument xmlDoc = new XmlDocument();
string AnwendungsVerzeichnis = Path.GetDirectoryName(GetType).Assembly.Location) + @"\";
string XmlPfad = Path.Combine(AnwendungsVerzeichnis, "xxxx.xml");
xmlDoc.Load(XmlPfad);

XmlNodeList nodeList = xmlDoc.GetElementsByTagName("add");
     StringStr=nodeList[0].Attributes["value"].InnerText 
         

Viele Grüße
stiegl

Nicht weil es schwer ist, wagen wir es nicht, sondern weil wir es nicht wagen, ist es schwer.

www.1ni.at

R
12 Beiträge seit 2007
vor 16 Jahren

Hi,

ich hoffe, es ist nicht so schlimm wenn ich mir mal den Thread ausleihe bzw. die Frage etwas erweitere.

Also die Lösung von stiegl funktioniert bei mir eigentlich gut. Jetzt habe ich aber das Problem, dass ich mehrere dieser AppSettings Abteilungen habe, also so zB.


<?xml version="1.0" encoding="utf-8" ?> 

<configuration>
 <appSettings>
  <add key="dbs" value="12345" />
 </appSettings>
 <appSettings>
  <add key="abc" value="56789" />
 </appSettings>
</configuration>

[edit]Bitte nächstes Mal selbständig Code-Tags verwenden. Danke! - VizOne[/edit]

(Unter Umständen haben die Tags der AppSettings auch noch eigene Attribute.)
Wie kann ich jetzt erreichen, dass er mir nur die "add" Attribute ganz bestimmter <AppSettings> ausliest?

Geht es eigenlich auch, dass man sich durch die verschiedenen <AppSettings> navigiert und bei Bedarf die <add> values einem String oder Array zuweist, sozusagen anstatt alles in eine Liste zu packen?

Ich hoffe, das ist nicht alles zu verworren von mir fomuliert worden.

Danke.
Grüße
roscore

S
8.746 Beiträge seit 2005
vor 16 Jahren

Warum nutzt du eigentlich nicht die eingebauten Funktionen um auf die AppSettings zuzugreifen oder gibt es einen guten Grund warum du das alles zu Fuß mchst?

R
12 Beiträge seit 2007
vor 16 Jahren

Hi,

ich bin mir nicht sicher was Du meinst.

Das mit den AppsSettings ist ja nur beispielhaft. Ich will den Tagname oder das Attribute der verschieden sozusagen Hauptknoten erst auslesen (bei mir wären es verschiedene Sprachen, also deutsch, englisch usw.). Damit wird ein Auswahlfenster gefüllt, der User wählt eine oder mehrere an und dann will ich zu den entsprechenden SprachTags hüpfen und dort die verschieden items bzw. Atribute auslesen.

Ich habe zwar schon etwas in die Hilfe geschaut, aber ich weiß z.B. nicht was besser geeignet ist, Xmltextreader oder doch XmlDocument. Irgendwie habe ich das auch ganze Handling dieser Nodelists noch nicht so ganz verstanden.

Grüße
roscore

@VizOne: Sorry, wird gemacht.

S
8.746 Beiträge seit 2005
vor 16 Jahren

Original von roscore
Das mit den AppsSettings ist ja nur beispielhaft.

Ach so. Für den Zugriff auf die Konfig-Datei bietet das Framework nämlich spezielle Klassen an, die einem das Hantieren mit XML ersparen.

Ansonsten gibt es übrigens noch das Verfahren der Serialisierung um XML zu lesen und zu schreiben. Im Prinzip das eleganteste und schnellste Verfahren weil voll objektorientiert. Vorraussetzung ist allerdings das Vorliegen eines Schemas für das XML-Format.