Hallo zusammen,
ich habe erst vor kurzem mit C# angefangen habe also noch nicht so viel Erfahrung.
Nun zu meinem Problem.
Ich möchte prüfen ob in dieser Xml
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Settings>
<Database>
<DB-Path />
</Database>
<!--Profil-->
<Profil value="standard ">
<Host>test</Host>
<Login>Max</Login>
<Passwort>Max</Passwort>
<Port>25</Port>
</Profil>
</Settings>
ein Profil mit value=lala existiert. Der value Wert wird aber erst zur Laufzeit erzeugt.
Zur Suche habe ich diesen Code verwendet:
XmlDocument doc = new XmlDocument();
doc.Load("x:\profile.xml");
XmlNode node = doc.SelectSingleNode("//Profil[@value=$Test]");
Leider bekomme ich von VS2008 diese Fehlermeldung:
"Namespace-Manager oder 'XsltContext' erforderlich. Diese Abfrage hat einen Präfix, eine Variable oder eine benutzerdefinierte Funktion."
Wenn ich der Variable value aber einen konkreten Wert zuweise (@value='standard') funktioniert es.
Gibt es eine möglichkeit statt eines konkreten Wert eine Variable zu nutzen?
Hi,
also ich nehme mal durch das $Test an, dass du aus der PHP Welt kommst? Um einen String in C# zu bauen könntest du String.Format benutzen. $ Zeichen haben in C# nichts verloren.
Der String wird aus einer TextBox gelesen und in der Variable Test geschrieben.
Das $Test hab ich nur verwendet weil ich irgendwo gelesen hatte das es wohl so funktionieren soll.
Also du könntest folgendes tun:
string test = "standard";
string xPath = String.Format("//Profil[@value=\"{0}\"]", test);
XmlDocument doc = new XmlDocument();
doc.Load(@"x:\profile.xml");
XmlNode node = doc.SelectSingleNode(xPath);
edit:
Erklärung: Mit String.Format kannst du Variablen in einen String einfügen. {0} ist ein Platzhalter für die Variable und die Zahl innerhalb der geschweiften Klammern gibt die Parameternummer an.
Beispiel:
String.Format("Paramter1:{0}, Parameter2:{1}", p1, p2);
Wunderbar das funktioniert.
Vielen Dank.
Das Bedeutet man kann mit Xpath keine Variable, außer über diesen Umweg nutzen?
Zumindest nicht in C#. Wie gesagt, die Syntax mit dem $ sieht eher nach PHP oder Perl aus.