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



这是xml文档的一部分:

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

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

每次我的字符串返回null时。Xpath表达式如下:

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

错误必须在"and"(第二个属性)附近,因为如果我去掉这一部分,字符串就不再为空了。

如何将column的值精确地输入到字符串中?是什么导致了此错误?

谨致问候。

尝试将"and"替换为"][",如下所示:

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

它似乎是有效的xpath,所以我不确定问题出在哪里。我用xml和静态文本进行了一些测试,并能够构建以下运行良好的xpath语句:

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

这个问题可能与您的变量有关,而不是与xpath有关吗?你绝对确定"amountOfRows"one_answers"amountOfColumns"具有你期望的值吗?

您的问题似乎在其他地方。我写了以下代码:

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表达式按预期工作。