Fizzler HTMLAgilityPack c # Sélecteur CSS avec deux points

c# css-selectors fizzler html-agility-pack

Question

J'utilise le HTMLAgilityPack et j'essaie de sélectionner un ID d'élément contenant deux points.

Using Fizzler.Systems.HtmlAgilityPack;

Test n ° 1 (pseudo classe inconnue)

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

Test n ° 2 (caractère non valide en position 16)

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

Test n ° 3 (séquence d'échappement non reconnue)

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

Test n ° 4 (caractère invalide en position 16)

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

Qu'est-ce que je fais mal?

Il s'avère que j'ai regardé le code source 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])?
 //

Ils ne le supportent pas encore :(

Réponse populaire

\3A est une erreur de compilation car \3 n'est pas une séquence d'échappement valide dans une chaîne C #, vous devez donc échapper la barre oblique inverse. L'utilisation de \\: ou de \\3A est correcte, mais le moteur de sélecteur semble rencontrer des problèmes avec les séquences d'échappement CSS pour une raison quelconque.

Voyez si vous pouvez contourner ce problème avec un sélecteur d'attribut, ce qui supprime le besoin de séquences d'échappement:

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


Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow