Ho problemi a gestire un file XML (che si trova alla fine di questo post).Qual è l'uso corretto di XmlNode.SelectSingleNode (stringa xpath) in C#?
ho scritto il seguente codice al fine di ottenere Job_Id
dati relativi ad un determinato Job_Name
modello il cui proprietario Job_Owner
è l'utente che esegue il probram:
List<String> jobID = new List<String>();
XmlNodeList nodes = xml.SelectNodes("//Job");
foreach (XmlNode node in nodes)
{
innerNode = node.SelectSingleNode("//Job_Owner"); // SelectSingleNode here always selects the same node, but I thought it should be relative to node, not to nodes
if (!innerNode.InnerText.Contains(Environment.UserName))
{
continue;
}
innerNode = node.SelectSingleNode("//Job_Name");
if (!Regex.IsMatch(innerNode.InnerText, jobNamePattern, RegexOptions.Compiled))
{
continue;
}
innerNode = node.SelectSingleNode("//Job_Id");
jobID.Add(innerNode.InnerText);
}
Mi aspetterei che node.SelectSingleNode("//Job_Name")
cerca di un tag di nome solo Job_Name
sotto il codice xml rappresentato da node
.
Questo non è quello che sembra accadere, come ritorno sempre lo stesso nodo, non importa in quale punto foreach
è (cioè il node
scelto fra i nodes
modifiche, ma la node.SelectSingleNode("//Job_Name")
ritornano sempre stesso contenuto).
Cosa c'è di sbagliato con questo codice?
Grazie in anticipo!
-
Il file XML si presenta così:
<Data>
<Job>
<Job_Id>58282.minerva</Job_Id>
<Job_Name>sb_net4_L20_sType1</Job_Name>
<Job_Owner>[email protected]</Job_Owner>
<!--more tags-->
</Job>
<Job>
<!--etc etc etc-->
</Job>
<!--etc etc etc-->
</Data>
Questo programma è ora installato e funzionante! =) ~ Grazie per le risposte! – Girardi