いくつかのXMLファイルを扱う際に問題があります(この記事の最後にあります)。C#のXmlNode.SelectSingleNode(string xpath)の正しい使い方は何ですか?
私はその所有者Job_Owner
probramを実行しているユーザである与えられたJob_Name
パターンに関連Job_Id
データを取得するために、次のコードを書いた:私はnode.SelectSingleNode("//Job_Name")
だけJob_Name
という名前のタグのために求めていることを期待
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
で表されるxmlコードの下にあります。
それは常に同じノードを返すように、それが起こっているように見えるものではありません、nodes
変化から選択node
すなわち、(それがforeach
のどの段階でも問題はなく、node.SelectSingleNode("//Job_Name")
は常に返しません同じコンテンツ)。
このコードで何が問題になっていますか?
ありがとうございます!
-
XMLファイルは、次のようになります。あなたは、XPathで '//' 構文を使用しているので、
<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>
このプログラムが起動している今です! =)〜答えをありがとう! – Girardi