Fizzler HTMLAgilityPack c # Селектор CSS с Colon

c# css-selectors fizzler html-agility-pack

Вопрос

Я использую HTMLAgilityPack, и я пытаюсь выбрать идентификатор элемента с двоеточием.

Using Fizzler.Systems.HtmlAgilityPack;

Тест №1 (Неизвестный псевдокласс)

HtmlNodeSelection.QuerySelectorAll( _htmlDocument.DocumentNode,"#unlocktheinbox:test");

Тест № 2 (Недопустимый символ в позиции 16.)

HtmlNodeSelection.QuerySelectorAll( _htmlDocument.DocumentNode,"#unlocktheinbox\\:test");

Тест № 3 (непризнанная escape-последовательность)

HtmlNodeSelection.QuerySelectorAll( _htmlDocument.DocumentNode,"#unlocktheinbox\3A test");

Тест № 4 (Недопустимый символ в позиции 16.)

HtmlNodeSelection.QuerySelectorAll( _htmlDocument.DocumentNode,"#unlocktheinbox\\3A test");

Что я делаю не так?

Оказывается, я посмотрел исходный код для Fizzler ..

 // TODO Support full string syntax!
 //
 // string    {string1}|{string2}
 // string1   \"([^\n\r\f\\"]|\\{nl}|{nonascii}|{escape})*\"
 // string2   \'([^\n\r\f\\']|\\{nl}|{nonascii}|{escape})*\'
 // nonascii  [^\0-\177]
 // escape    {unicode}|\\[^\n\r\f0-9a-f]
 // unicode   \\[0-9a-f]{1,6}(\r\n|[ \n\r\t\f])?
 //

Они еще не поддерживают его :(

Популярные ответы

\3A - ошибка времени компиляции, потому что \3 не является допустимой escape-последовательностью в строке C #, поэтому вам нужно избежать обратного слэш. Использование либо \\: или \\3A является правильным, но механизм выбора имеет проблемы с escape-последовательностями CSS по любой причине.

Посмотрите, можете ли вы обойти это с помощью селектора атрибутов, что устраняет необходимость в escape-последовательностях:

HtmlNodeSelection.QuerySelectorAll(_htmlDocument.DocumentNode, "[id='unlocktheinbox:test']");


Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow