Hoi.
Ik heb wat problemen met het selecteren en uitlezen van een node in een
xml-document mbhv XPath.
M'n XML document ziet er bv als volgt uit:
[nohtml]
code:
[/nohtml]1
2
3
4
5
6
7
8
9
10
11
| <logconfig>
<logger type="textfile">
<name>logfile.txt</name>
</logger>
<logger type="xmlfile">
<name>logfile.xml</name>
</logger>
<logger type="database">
<name>connectionstring</name>
</logger>
</logconfig> |
In m'n C# programma wil ik nu, afhankelijk van een bepaalde parameter een bepaalde node uitlezen.
Dit probeer ik te doen dmv volgende code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| XPathDocument configFile;
XPathNavigator searchNode;
XPathNodeIterator configNode;
string XPathQuery;
configFile = new XPathDocument(@"c:\logconfig.xml");
searchNode = configFile.CreateNavigator();
XPathQuery = "/logconfig/logger[@type=\'";
switch (sourceType)
{
case LogSourceType.LogToDb :
XPathQuery += "database\']/name";
break;
case LogSourceType.LogToTextFile :
XPathQuery += "textfile\']/name";
break;
case LogSourceType.LogToXML :
XPathQuery += "xmlfile\']/name";
break;
default :
throw new ArgumentException();
}
configNode = searchNode.Select(XPathQuery);
} |
Aangezien m'n XPath query er bv als volgt uit ziet:
code:
1
| /logconfig/logger[@type='textfile']/name |
veronderstel ik dat er dus in configNode de name node zit van de betreffende logger - node.
Dus, dan denk ik dat ik, als ik de waarde van de node als volgt uitlees:
code:
1
| configNode.Current.Value; |
Ik in dit geval textfile.txt moet terugkrijgen.
Niets is echter minder waar.... Ik krijg blijkbaar alle name - node's terug, en niet alleen dat van de betreffende logger - node:
code:
1
| logfile.txtlogfile.xmldatasource |
is wat ik terug krijg....
Ikke nie snap.
Is er wat fout met m'n xpath-query? Of zie ik iets over het hoofd in m'n C# code?
https://fgheysels.github.io/