Получение нескольких значений из узла xml (xpath) - PullRequest
0 голосов
/ 17 июня 2011

Это часть XML-документа:

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

Как я могу точно поместить эти 3 значения в строку?

Каждый раз, когда моя строка возвращает ноль.Xpath xpression выглядит следующим образом:

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

Ошибка должна быть где-то около «и» (2-й атрибут), потому что, если я пропущу эту часть, строка больше не будет нулевой.

Как именно я могу получить значение столбца в моей строке и что вызывает эту ошибку?

С наилучшими пожеланиями.

Ответы [ 3 ]

0 голосов
/ 17 июня 2011

Кажется, что это правильный xpath, поэтому я не уверен, в чем проблема.Я немного поэкспериментировал с xml и статическим текстом и смог построить следующий оператор xpath, который отлично работает:

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

Может ли проблема быть связана с вашими переменными, а не с xpath?Вы абсолютно уверены, что значения "amountOfRows" и "amountOfColumns" имеют ожидаемые значения?

0 голосов
/ 17 июня 2011

Похоже, ваша проблема в другом месте. Я написал следующий код:

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 работает как положено.

0 голосов
/ 17 июня 2011

Попробуйте заменить "и" на "] [" примерно так:

string xpath = "//directory[@level='" + directoryLevel+ "']/cel[@row='" + amountOfRows + "'][@column='" + amountOfColumns+ "']";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...