Mój program musi przeanalizować pliki css do formatu obiektu w pamięci. Wszelkie porady, jak to zrobić?Czy istnieje parser CSS dla C#?
Odpowiedz
ExCSS (obsługuje CSS2.1 i CSS3) na GitHub: https://github.com/TylerBrinks/ExCSS.
Która jest nowsza wersja artykułu Kod projektu: http://www.codeproject.com/KB/recipes/CSSParser.aspx
życzyłby sobie, aby przeanalizował zapytanie o media do modelu obiektowego. nie jest to szczególnie trudne, ale wszystko, co daje, to ciąg znaków: –
to działa, ale znalazło się wiele rzeczy, których nie może przeanalizować: 'calc (50vw - 23em)' staje się 'calc (50vw = 23em)'/' 3rem' zmienia się w '3' /' z-index: 2147483647' zmienia się na 'z-index: 2.147484E + 09' /' * display: none' zmienia się na 'display: none' –
Nie obsługuje on również' @ -ms-viewport 'return' {System.Collections.Generic.List \' 1 [ExCSS.RuleSet]} 'na wyjściu. –
i nieco wolniejszy wyszukiwania podkręca blogu „CSS parser class in .NET”, który osadza this gist on GitHub (w przypadku, gdy blog umiera nigdy).
... ah - i to umarł – Alex
Here można znaleźć inny specjalnie dla C# ze źródłem próbki.
to używa wyrażeń regularnych, które po prostu nie będzie go wyciąć dla złożonego css –
Napisałem jeden, używając gramatyki określonej w specyfikacji CSS 2.1. Mam również wydany teraz: szczegóły patrz http://www.modeltext.com/css/
istnieje plik gramatyki CSS dla GoldParser:
http://goldparser.org/grammars/files/css.zip
GoldParser jest łatwe do uwzględnienia w projekcie C# i generuje rzeczywisty lalr - nie jakiś hak regex.
Parser LALR - nie jakiś regex Informacje na temat ich strony "Gramatyki GOLD oparte są na formie Backusa-Naura i wyrażeniach regularnych" – Justin
Dobra rada, regularne wyrażenia są fajne. Ręczne toczenie parsera nie jest –
To jest bardzo uproszczona wersja gramatyki CSS. Zamiast tego przeportowałem gramaturę odniesienia CSS (ze specyfikacji CSS 2.1), aby pracować z parserem GOLD ... i napisałem zespół C#, aby zaimplementować resztę (użyj wyjścia parsera do obliczenia stylu dla elementu w DOM, przy użyciu specyfiki reguły, dziedziczenia, wartości domyślnych itp.). – ChrisW
Czy próbowałeś one featured in JsonFx? Jest napisany w języku C#, analizuje składnię CSS3 i jest dystrybuowany w ramach licencji stylu MIT.
Wygląda jak najlepszy złej wiązki (rekursja za pomocą instrukcji 'goto' - ouch) – briantyler
@B:' goto' to świetny sposób na * uniknięcie * rekursji, ponieważ unika ponownego wczytywania funkcji. Jest to świetna alternatywa dla ryzyka przepełnienia stosu, gdy masz potencjalnie dużą liczbę iteracji. – Triynko
Co jest nie tak z rekursją? –
- 1. Czy istnieje parser Java dla języka Java?
- 2. Czy istnieje parser .NET CQL?
- 3. Parser/czytnik CSV dla C#?
- 4. Czy istnieje parser wieloczęściowy/formularz danych w C# - (NO ASP)
- 5. Czy istnieje parser ciągów połączenia w języku C#?
- 6. Python CSS Parser
- 7. Czy istnieje już biblioteka/parser YAML dla MATLAB?
- 8. Czy istnieje odpowiednik css dla "align =" center ""?
- 9. Czy istnieje odpowiednik ClientScriptManager.RegisterClientScriptInclude dla CSS
- 10. Czy istnieje make_tuple dla C#?
- 11. LISP Parser C++
- 12. Parser dla Wikipedii
- 13. Objective-C DOM parser XML dla iPhone'a
- 14. Prosty C XML parser
- 15. C# ASP.NET QueryString parser
- 16. C++ Utwórz parser
- 17. Zalecany parser JSON w C?
- 18. przykładem dla parser dla `Control.Applicative.optional`
- 19. Czy istnieje reset tekstu css?
- 20. Czy istnieje selektor CSS "haschildren"?
- 21. Czy istnieje takie ramy CSS?
- 22. XML Parser dla Ruby
- 23. Parser dla cudzysłowie wykorzystaniem Parsek
- 24. Czy istnieje jakiś parser JSDoc Open Source napisany w JavaScript?
- 25. PHP CSS Parser - Deklaracje Selektora na Ciąg
- 26. Czy istnieje selektor CSS dla elementów zawierających określony tekst?
- 27. Czy istnieje selektor CSS dla pierwszego bezpośredniego dziecka?
- 28. Czy istnieje odpowiednik CSS dla XIB (XCode Interface Builder XML)?
- 29. Czy istnieje odpowiednik w C dla szablonów C++?
- 30. Czy istnieje biblioteka do automatycznego wypróbowywania CSS?
Nie rozumiem, dlaczego to pytanie zostało zamknięte. Ma wiele głosów od ludzi, którzy najwyraźniej zastanawiają się nad tym samym. Tylko dlatego, że różne osoby mogą mieć różne opinie na temat najlepszego rozwiązania, co jest świetnym miejscem do wypisywania tych opinii dla innych z tym samym pytaniem. –
@JonathanWood - Całkowicie się zgadzam, ale zasady są takie, że zalecenia dotyczące narzędzi nie są tematem i proszą o rekomendację narzędzia. Zamknięcie jest właściwe, nawet jeśli jest frustrujące. – Bobson
Odtworzyłem ponownie pytanie, aby można je było ponownie otworzyć: – Softlion