Запрос XPath для атрибута, содержащего косую черту (/)

Я пытаюсь сделать SelectSingleNode на XMLDocument, используя выражение XPath. Однако, когда значение атрибута, которое я ищу, содержит несколько косых черт (/), оно возвращает null.

Я не могу найти в Интернете ресурсов, позволяющих избежать косой черты. Кто-нибудь знает способ обойти это? Или у меня неправильный синтаксис для соответствия значению атрибута?

Пример XML

<?xml version="1.0"?>
  <Root>
    <Page Path="/brand" />
    <Page Path="/brand/armada" />
  </Root>

Это выражение XPath возвращает правильный узел (например, первый в приведенном выше примере)

XmlNode N = xmlDoc.SelectSingleNode("Root/Page[@Path='/brand']");

Это выражение XPath возвращает значение null

XmlNode N = xmlDoc.SelectSingleNode("Root/Page[@Path='/brand/armada']");

Я нахожусь в среде C #, .net 3.5.

РЕДАКТИРОВАТЬ: Спасибо за ответы. Я решил проблему, используя двойную косую черту в выражении select.

XmlNode N = xmlDoc.SelectSingleNode("Root//Page[@Path='/brand/armada']");

person Chris    schedule 05.05.2011    source источник
comment
Мое приложение консоли с минимальным воспроизведением дает ожидаемые результаты от обоих xpaths   -  person AakashM    schedule 05.05.2011
comment
Должно быть ошибка. Или проблема в другом. XMLspy 2011 sp1 исправляет это с помощью ваших выражений Xpath.   -  person ceving    schedule 05.05.2011
comment
@chris, если вы сами нашли ответ, можете ли вы опубликовать ответ ниже и отметить его как принятый, чтобы другие могли получить пользу. Это также будет означать, что этот вопрос больше не отображается в разделе «Без ответа» SO. Спасибо   -  person BMac    schedule 11.05.2015
comment
Возможный дубликат Как избежать апострофа в текстовом запросе XPath с помощью Perl и Selenium?   -  person BMac    schedule 15.02.2016
comment
Было бы здорово разместить ответ и отметить его. Просто ради очистки списка.   -  person Honza Hejzl    schedule 22.03.2016


Ответы (1)


Спасибо за ответы. Я решил проблему, используя двойную косую черту в выражении select.

XmlNode N = xmlDoc.SelectSingleNode("Root//Page[@Path='/brand/armada']");
person Chris    schedule 23.03.2016