У меня проблемы с работой с каким-то файлом XML (который находится в конце этого поста).
Я написал следующий код, чтобы получить Job_Id
данные, относящиеся к данному шаблону Job_Name
, владельцем которого Job_Owner
является пользователь, запускающий пробраму:
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);
}
Я ожидаю, что node.SelectSingleNode("//Job_Name")
ищет тег с именем Job_Name
только под кодом XML, представленным node
.
Это не то, что, кажется, происходит, так как он всегда возвращает один и тот же узел, не имеет значения, на каком шаге foreach
он находится (т.е. node
, выбранный из nodes
, изменяется, но node.SelectSingleNode("//Job_Name")
всегда возвращает одно и то же содержимое).
Что не так с этим кодом?
Заранее спасибо!
-
Файл XML выглядит следующим образом:
<Data>
<Job>
<Job_Id>58282.minerva</Job_Id>
<Job_Name>sb_net4_L20_sType1</Job_Name>
<Job_Owner>mgirardis@minerva</Job_Owner>
<!--more tags-->
</Job>
<Job>
<!--etc etc etc-->
</Job>
<!--etc etc etc-->
</Data>