XML:Auslesen von 1 Zeile (nicht-case-sensitiv)

08/05/2008 - 13:37 von WolfgangH | Report spam
Hallo,
Diverse Einstellungen sind in einem XML-File abgelegt (s. Beispiel).
Dabei kann es vorkommen dass "Farbe" oder "farbe" als key drinsteht.
<configuration>
<appSettings>
<add key="Farbe" value="rot"></add>
<add key="Liniendicke" value="3"></add>
<add key="Drucker" value="Canon SPC"></add>
<add key="language" value="italiano"></add>
.
</appSettings>
</configuration>

Mit dem XmlTextReader kann ich das File mit allen key-value-Paaren GESAMT
auslesen. Danach kann ich über nicht-case-sensitiven Stringvergleich meinen
gesuchten key finden.

1.
Gibt es einen direkten XML-Zugriff, der nur ein key-value-Paar ausliest?
2.
Wenn ja: Kann das für den key nicht-case-sensitiv erfolgen

Danke schon mal
Wolfgang
 

Lesen sie die antworten

#1 Martin Honnen
08/05/2008 - 18:37 | Warnen spam
WolfgangH wrote:

1.
Gibt es einen direkten XML-Zugriff, der nur ein key-value-Paar ausliest?



Mittels XPathDocument/XPathNavigator:
XPathDocument doc = new XPathDocument("file.xml");

XPathNavigator nav = doc.CreateNavigator().SelectSingleNode(
"configuration/appSettings/add[@key = 'Farbe']/@value");
if (nav != null)
string value = nav.Value;

2.
Wenn ja: Kann das für den key nicht-case-sensitiv erfolgen



Möglich ist das mit XPath, aber eher aufwendig:

XPathDocument doc = new XPathDocument("file.xml");

XPathNavigator nav = doc.CreateNavigator().SelectSingleNode(
"configuration/appSettings/add[translate(@key,
'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz' =
'farbe']/@value");
if (nav != null)
string value = nav.Value;

Falls du schon .NET 3.5 benutzt, könnte man auch LINQ to XML nehmen.


Martin Honnen MVP XML
http://JavaScript.FAQTs.com/

Ähnliche fragen