softprga Ответов: 1

Ошибка Xmlnodelist в xpath содержит двойную кавычку


Привет,

мой xmlnodelist содержит следующую строку
<rows><row rowID=\"1\"><ValueColumn>value1\"</ValueColumn></row></rows>


строка a=
"rows/row[ValueColumn=\"value1\"\"]"


XmlNodeList optionNodes = _optionNode.SelectNodes(a);

получение ошибки ,недопустимый токен.

Что я уже пробовал:

"/*/rows/row[ValueColumn=\"value4witha\"\"]"

не работать

Richard MacCutchan

Да, из-за дополнительного символа кавычки после value1.

1 Ответов

Рейтинг:
2

Richard Deeming

Используйте одинарные кавычки вокруг искомого значения:

"/*/rows/row[ValueColumn='value1\"']"

NB: Если вам нужно искать значения, которые содержат смесь одинарных и двойных кавычек, все становится намного сложнее. Вы в основном должны разделить строки так, чтобы каждая часть содержала только один тип цитаты, использовать другой тип цитаты, чтобы начать и закончить эту строку, а также использовать concat объединить их. Например:
<row><ValueColumn>I'd like it if "This" was easier!</ValueColumn></row>
"row[ValueColumn=concat(\"I'd like it if \", '\"This\" was easier!')]"

XPath 2.0, по-видимому, делает это проще, позволяя вам избежать кавычек, удваивая их:
"row[ValueColumn=\"I'd like it if \"\"This\"\" was easier!\"]"
"row[ValueColumn='I''d like it if \"This\" was easier!']"
К сожалению, .NET никогда не реализовывал XPath 2.0, так что это не будет работать в C#.

c# - использование кавычек в Xpath - переполнение стека[^]


Maciej Los

5ed!