IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

Html syntax highlighter v C # .NET

Aplikácia postupne dekóduje jednotlivé tagy. U tých sa uchováva názov tagu, signatúra, atribúty, telo, rodič, pod tagy a typ tagu.

HtmlParser

Polovica aplikácia je tvorená triedou HtmlParser, ktorá dostane ako vstup čisté HTML (alebo čokoľvek s podobnou syntaxou na báze tagov) a vracia hlavné tag ako koreň, ktorý má niekoľko vetiev (väčšinou asi doctype a html). Kontrolujem znak po znaku a keď narazím na znak <, tak indikujú začiatok tagu a postupne sa dekóduje. To znamená, že sa zistí signatúra a typ tagu. Ďalej, keď to nie je comment alebo tzv. Plain text, tak sa zistí názov tagu a jeho atribúty (či je má). Ak je to typ párový, tak sa zistí telo toho tagu (zistí sa koniec tagu a vezme sa vnútro) a zavolá sa znova parsovací metóda, pretože na začiatku tela je určite nejaký tag.

Pozn .: Aj plain text je tu vo forme tagu, pretože aj taký HTML je validný.

<p>First line<br>Second line</p>

HtmlHighlighter

Druhá polovica aplikácia je tvorená touto triedou, ktorá formátuje výsledok parsera. Na začiatku to rieši odsadenie podľa hĺbky tagu. Potom sa rozhoduje, či je to plain text, tak sa len pridá telo toho tagu. Potom sa zavolá metóda pre vloženie signatúry metódy, tá si vnútri zistí ako má signatúra vyzerať, zafarbia atribúty a ich hodnoty a zvýrazní meno tagu. Ak je to tag párový, tak sa zas volá metóda pre všetky jej subtagy s hĺbkou + 1. Až sú všetky subtagy vyfarbené, tak sa pridá ukončovacie tag.


Galéria


 

Stiahnuť

Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami

Stiahnuté 89x (279.47 kB)
Aplikácia je vrátane zdrojových kódov v jazyku C#

 

Všetky články v sekcii
Okenné aplikácie v C # .NET WPF
Preskočiť článok
(neodporúčame)
Jazyk XAML v C # .NET WPF
Program pre vás napísal Jan Vargovský
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
H̴̢̡̛̫̙̖̦͍̥̺̳̪͖̺̫̲͇̗̹̠̥͈̭͔̻̗͚̭̥̝͐̋͒̆̾̅͒̈̐̀̒̔̇̈̔̆̎̔͐̊͆̆̐̊̈͆̂̐̓̓͛̌̈́̈́̅̅̔̚̕̚͠͝͝͝͝ì̸͇͖̹̯̤͇͍̹̥̅͗͆̄̌͆͑̓̈́̓̊̈́͋̈́͛͊͛͂̇͋͒̿̃͐͌̐̚͝͝͝͝͝͝.̶̧̡̧̧̖̫̯̞͖̯̩̠̭̩͇͔̤̱̜̠̠̙͉͉̼̱͓̣͍̱͎͕̦͓̫̗̮̦͍͚̗͕̥̳͚̬̯̞̟͇̻̺̙͙̜͖̰̊͒̌̌̚͜͜͝
Aktivity