Fizzler HTMLAgilityPack c # Selettore CSS con due punti

c# css-selectors fizzler html-agility-pack

Domanda

Sto utilizzando HTMLAgilityPack e sto provando a selezionare un ID elemento con due punti al suo interno.

Using Fizzler.Systems.HtmlAgilityPack;

Test n. 1 (Pseudo classe sconosciuta)

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

Test n. 2 (Carattere non valido alla posizione 16)

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

Test # 3 (sequenza di escape non riconosciuta)

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

Test # 4 (Carattere non valido alla posizione 16.)

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

Che cosa sto facendo di sbagliato?

Risulta che ho guardato il codice sorgente di 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])?
 //

Non lo supportano ancora :(

Risposta popolare

\3A è un errore in fase di compilazione poiché \3 non è una sequenza di escape valida in una stringa C #, quindi è necessario sfuggire alla barra rovesciata. L'utilizzo di \\: o \\3A è corretto, ma il motore di selezione sembra avere problemi con le sequenze di escape CSS per qualsiasi motivo.

Verifica se puoi ovviare a questo problema con un selettore di attributo, che elimina completamente la necessità di sequenze di escape:

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


Related

Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché