Как правильно использовать XmlNode.SelectSingleNode (строка xpath) в C #?

У меня проблемы с работой с некоторым файлом 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 он находится (т.е. выбран узел из узлов изменяется, но узел . 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>
20
задан Girardi 7 October 2011 в 21:18
поделиться