Fizzler HTMLAgilityPack c # CSS-Selektor mit Doppelpunkt

c# css-selectors fizzler html-agility-pack

Frage

Ich verwende das HTMLAgilityPack und ich versuche, eine Element-ID mit einem Doppelpunkt darin auszuwählen.

Using Fizzler.Systems.HtmlAgilityPack;

Test # 1 (unbekannte Pseudoklasse)

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

Test # 2 (ungültiges Zeichen an Position 16)

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

Test # 3 (Nicht erkannte Escape-Sequenz)

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

Test # 4 (ungültiges Zeichen an Position 16)

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

Was mache ich falsch?

Stellt sich heraus, sah ich den Quellcode für 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])?
 //

Sie unterstützen es noch nicht :(

Beliebte Antwort

\3A ist ein Fehler bei der Kompilierung, weil \3 keine gültige Escape-Sequenz in einer C # -Zeichenfolge ist. Daher müssen Sie den Backslash umgehen. Die Verwendung von entweder \\: oder \\3A ist korrekt, aber die Selektor-Engine scheint aus irgendeinem Grund Probleme mit CSS-Escape-Sequenzen zu haben.

Sehen Sie, ob Sie dies stattdessen mit einem Attributselektor umgehen können, wodurch die Notwendigkeit von Escape-Sequenzen gänzlich entfällt:

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


Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum