Fizzler HTMLAgilityPack c # CSS Selector con dos puntos

c# css-selectors fizzler html-agility-pack

Pregunta

Estoy usando el HTMLAgilityPack y estoy tratando de seleccionar un ID de elemento con dos puntos.

Using Fizzler.Systems.HtmlAgilityPack;

Prueba # 1 (Pseudo clase desconocida)

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

Prueba n. ° 2 (carácter no válido en la posición 16).

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

Prueba # 3 (secuencia de escape no reconocida)

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

Prueba n. ° 4 (carácter no válido en la posición 16).

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

¿Qué estoy haciendo mal?

Resulta que miré el código fuente de 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])?
 //

Aún no lo soportan :(

Respuesta popular

\3A es un error en tiempo de compilación porque \3 no es una secuencia de escape válida en una cadena de C #, por lo que necesita escapar de la barra invertida. Usar \\: o \\3A es correcto, pero el motor de selección parece tener problemas con las secuencias de escape de CSS por cualquier motivo.

Vea si puede evitar esto con un selector de atributos, lo que elimina la necesidad de secuencias de escape por completo:

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


Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué