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

C# 从xml节点(xpath)检索多个值,c#,asp.net,xpath,C#,Asp.net,Xpath,这是xml文档的一部分: <directory level="Beginner"> <cel row="0" column="0" visible="no">2</cel> </directory> 错误必须在和第2个属性的某个位置,因为如果我忽略该部分,字符串就不再为null 如何准确地将列的值获取到字符串中,以及是什么导致了此错误 致以最诚挚的问候。请尝试将and替换为][like so: string xpath = "//dire

这是xml文档的一部分:

<directory level="Beginner">
    <cel row="0" column="0" visible="no">2</cel>
</directory>
错误必须在和第2个属性的某个位置,因为如果我忽略该部分,字符串就不再为null

如何准确地将列的值获取到字符串中,以及是什么导致了此错误


致以最诚挚的问候。

请尝试将and替换为][like so:

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

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

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

问题是否与变量有关而与xpath无关?您是否绝对确定AMONTOFROWS和AMONTOFCOLUMN具有您期望的值?

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

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

您想要的结果字符串是什么?是的,因为行在for循环中,列也是这样。初学者和调试时的2倍0,但字符串显示为null。
<cel row="0" column="0" visible="no">2</cel>