从xml节点(xpath)检索多个值

时间:2011-06-17 15:54:37

标签: c# asp.net xpath

这是xml文档的一部分:

<directory level="Beginner">
    <cel row="0" column="0" visible="no">2</cel>
</directory>

如何将这3个值准确地放在字符串中?

每次我的字符串返回null。 Xpath xpression如下:

string xpath = "//directory[@level='" + directoryLevel+ "'] /cel[@row='" + amountOfRows + "' and @column='" + amountOfColumns+ "']";

错误必须在“和”(第二个属性)附近,因为如果我将该部分留出,则该字符串不再为空。

我怎样才能将列的值输入到我的字符串中以及导致此错误的原因?

最诚挚的问候。

3 个答案:

答案 0 :(得分:0)

尝试将“和”替换为“] [”如此:

string xpath = "//directory[@level='" + directoryLevel+ "']/cel[@row='" + amountOfRows + "'][@column='" + amountOfColumns+ "']";

答案 1 :(得分:0)

它似乎是有效的xpath所以我不确定是什么问题。我使用xml和静态文本测试了一下,并且能够构建以下xpath语句,该语句工作正常:

//directory[@level='Beginner']/cel[(@row='0') and (@column='0')]

问题可能与你的变量有关,而不是xpath?您是否绝对确定“amountOfRows”和“amountOfColumns”具有您期望的值?

答案 2 :(得分:0)

看起来您的问题出在其他地方。我写了以下代码:

XmlDocument document = new XmlDocument();
document.LoadXml("<directory level=\"Beginner\"><cel row=\"0\" column=\"0\" visible=\"no\">2</cel></directory>");

string directoryLevel = "Beginner";
string amountOfRows = "0";
string amountOfColumns = "0";

string xpath = "//directory[@level='" + directoryLevel+ "']/cel[@row='" + amountOfRows + "' and @column='" + amountOfColumns+ "']";
XmlNode node = document.SelectSingleNode(xpath);

Console.WriteLine(node.OuterXml);

输出结果为:

<cel row="0" column="0" visible="no">2</cel>

结论:xpath表达式按预期工作。