Tengo problemas para tratar con algún archivo XML (que se encuentra al final de esta publicación).¿Cuál es el uso correcto de XmlNode.SelectSingleNode (string xpath) en C#?
me escribió el siguiente código a fin de obtener Job_Id
datos relacionados con un Job_Name
patrón determinado cuyo propietario Job_Owner
es el usuario que ejecuta el 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);
}
yo esperaría que node.SelectSingleNode("//Job_Name")
busca de una etiqueta llamada Job_Name
solamente bajo el código xml representado por node
.
Eso no es lo que parece estar sucediendo, ya que siempre devuelven el mismo nodo, no importa en qué paso del foreach
es (es decir, el node
seleccionado de los nodes
cambios, pero el node.SelectSingleNode("//Job_Name")
siempre devuelven el mismo contenido).
¿Qué hay de malo en este código?
¡Gracias de antemano!
-
el archivo XML tiene el siguiente aspecto:
<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>
Este programa ya está en marcha y funcionando! =) ~ ¡Gracias por las respuestas! – Girardi