AnglesSharp ist eine .NET-Bibliothek, die Ihnen die Möglichkeit bietet, Winkel-Bracket-basierte Hypertexte wie HTML, SVG und MathML zu analysieren. XML ohne Validierung wird auch von der Bibliothek unterstützt. Ein wichtiger Aspekt von Anglessharp ist, dass CSS auch analysiert werden kann. Der mitgelieferte Parser basiert auf der offiziellen W3C -Spezifikation. Dies erzeugt eine perfekt tragbare HTML5 -DOM -Darstellung des angegebenen Quellcode und sorgt für die Kompatibilität mit Ergebnissen in immergrünen Browsern. Auch Standard -DOM -Merkmale wie querySelector oder querySelectorAll -Funktionen für Baumtraversal.
⚡⚡ Migration von AnglesSharp 0,9 zu AnglesSharp 0,10 oder später (inkl. 1,0)? Schauen Sie sich unsere Migrationsdokumentation an. ⚡⚡
BrowsingContext ist wie ein Browser -Registerkarte - steuern Sie ihn von .NET!). Der Vorteil ähnlicher Bibliotheken wie HTMLAGilityPack besteht darin, dass der freiliegende DOM die offizielle W3C -API verwendet, dh selbst, dass selbst Dinge wie querySelectorAll in AnglesSharp verfügbar sind. Auch der Parser verwendet die HTML 5.1 -Spezifikation, die die Fehlerbehandlung und die Elementkorrektur definiert. Die AnglesSharp -Bibliothek konzentriert sich auf die Einhaltung von Standards, die Interaktivität und die Erweiterbarkeit. Es gibt daher Webentwicklern, die mit C# allen Möglichkeiten arbeiten, wie sie wissen, dass sie das DOM in einem modernen Browser verwenden.
Die Leistung von Anglesharp ist der Leistung von Browsern ziemlich nahe. Selbst sehr große Seiten können in Millisekunden verarbeitet werden. AnglesSharp versucht, Speicherzuweisungen zu minimieren und Elemente intern wiederverwendet, um unnötige Objekterstellung zu vermeiden.
Das einfache Beispiel verwendet die Website von Wikipedia zum Datenabruf.
var config = Configuration . Default . WithDefaultLoader ( ) ;
var address = "https://en.wikipedia.org/wiki/List_of_The_Big_Bang_Theory_episodes" ;
var context = BrowsingContext . New ( config ) ;
var document = await context . OpenAsync ( address ) ;
var cellSelector = "tr.vevent td:nth-child(3)" ;
var cells = document . QuerySelectorAll ( cellSelector ) ;
var titles = cells . Select ( m => m . TextContent ) ;Oder dasselbe mit expliziten Typen:
IConfiguration config = Configuration . Default . WithDefaultLoader ( ) ;
string address = "https://en.wikipedia.org/wiki/List_of_The_Big_Bang_Theory_episodes" ;
IBrowsingContext context = BrowsingContext . New ( config ) ;
IDocument document = await context . OpenAsync ( address ) ;
string cellSelector = "tr.vevent td:nth-child(3)" ;
IHtmlCollection < IElement > cells = document . QuerySelectorAll ( cellSelector ) ;
IEnumerable < string > titles = cells . Select ( m => m . TextContent ) ;In dem Beispiel sehen wir:
Jede Sammlung in AnglesSharp unterstützt LINQ -Anweisungen. AnglesSharp bietet auch viele nützliche Erweiterungsmethoden für Elementsammlungen, die im offiziellen DOM nicht zu finden sind.
AnglesSharp wurde als .NET Standard 2.0 -kompatible Bibliothek erstellt. Dies schließt, aber nicht beschränkt auf:
Die Dokumentation von Anglesharp befindet sich im Ordner docs. Weitere Beispiele, Best-Practices und allgemeine Informationen finden Sie dort. Die Dokumentation enthält auch eine Liste der häufig gestellten Fragen.
Weitere Informationen finden Sie auch, indem Sie einige der im Wiki genannten Hyperreferenzen folgen. Ausführliche Artikel werden auf dem CodeProject veröffentlicht, wobei Links im Wiki in GitHub platziert werden.
Das Projekt zielt darauf ab, eine solide Implementierung des W3C DOM für HTML, SVG, MATHML und CSS in die CLR zu bringen - alle in C#geschrieben. Die Idee ist, dass Sie im Grunde alles mit dem DOM in C# tun können, was Sie in JavaScript tun können (und natürlich mehr).
Die meisten Teile des DOM sind enthalten, obwohl einige möglicherweise noch ihre (vollständig angegebene / korrekte) Implementierung verpassen. Das Ziel von V1.0 ist es, dass alle praktisch relevanten Teile gemäß der offiziellen W3C -Spezifikation (mit nützlichen Erweiterungen durch das Whatwg) implementiert werden.
Die API liegt in der Nähe der DOM4 -Spezifikation. Die Benennung wurde jedoch so angepasst, dass sie mit .NET -Konventionen angewendet werden. Um AnglesSharp wirklich nützlich zu machen, z. Dies ermöglicht die automatische Erzeugung von DOM -Objekten mit der offiziellen API.
Dies ist ein langfristiges Projekt, das schließlich zu einem hochmodernen Parser für die wichtigsten Hypertexte auf Winkelklassen führen wird.
Wir hoffen, eine Community rund um Web -Parsen und Bibliotheken aus diesem Projekt aufzubauen. Bisher hatten wir große Beiträge, aber dieses Ziel wurde nicht vollständig erreicht. Willst du helfen? Machen Sie sich mit uns in Verbindung!
Wenn Sie eine Funktion kennen, die AnglesSharp derzeit fehlt und Sie bereit sind, die Funktion zu implementieren, ist Ihr Beitrag mehr als willkommen! Auch wenn Sie eine wirklich coole Idee haben - seien Sie nicht schüchtern, wir würden es gerne hören.
Wenn Sie eine Idee haben, wie Sie die API verbessern (oder was fehlt), sind auch Beiträge / Nachrichten willkommen. Zum Beispiel gab es laufende Diskussionen über einige Stile HtmlDocument die in der Vergangenheit von AnglesSharp (z HTMLDocument Am Ende stellte Anglessharp mit HTMLDocument (zumindest außerhalb der Bibliothek sichtbar) auf. Jetzt verwendet AnglesSharp Namen wie IDocument , IHtmlElement usw. Diese Änderung wäre ohne solche fruchtbaren Diskussionen nicht möglich gewesen.
Das Projekt sucht immer nach zusätzlichen Mitwirkenden. Auch wenn Sie keinen Code haben, den Sie beibehalten können, sondern eine Idee zur Verbesserung, einen Fehlerbericht oder einen Fehler in der Dokumentation. Dies sind die Beiträge, die dieses Projekt aktiv halten.
Live -Diskussionen können in unserem Gitter -Chat stattfinden, der die Verwendung von Github -Konten unterstützt.
Weitere Informationen finden Sie in den Beitragsrichtlinien. Alle Mitwirkenden finden Sie in der Datei der Mitwirkenden.
Dieses Projekt hat auch den Verhaltenskodex übernommen, der vom Mitwirkenden Covenant definiert ist, um das erwartete Verhalten in unserer Gemeinde zu klären.
Weitere Informationen finden Sie im Verhaltenskodex der .Net Foundation.
Wenn Sie häufig AnglesSharp verwenden, aber nicht die Zeit haben, das Projekt durch aktive Teilnahme zu unterstützen, sind Sie möglicherweise immer noch daran interessiert, dass die Anglesharp -Projekte die Lichter anhalten.
Daher haben wir über BountySource ein Backing -Modell erstellt. Jede Spende ist willkommen und sehr geschätzt. Wir werden das Geld hauptsächlich für die engagierte Entwicklungszeit ausgeben, um den Anglesharp zu verbessern, wo es verbessert werden muss, und in das ECO-System des Web Utility in .NET (z. B. in JavaScript-Motoren, andere Parsers oder einen Renderer für Anglesharp, um einige herausragende Projekte zu erwähnen).
Besuchen Sie Bountysource für weitere Informationen.
AnglesSharp ist in der neuesten Version von C# geschrieben und benötigt somit Roslyn als Compiler. Die Verwendung einer IDE wie Visual Studio 2019+ wird unter Windows empfohlen. Alternativ sollte VSCODE (mit Omnisharp oder einem anderen geeigneten Sprachserverprotokoll -Implementierung) das Tool der Wahl auf anderen Plattformen sein.
Der Code versucht, so sauber wie möglich zu sein. Insbesondere werden die folgenden Regeln verwendet:
-Async -Suffix -Methoden, wenn verfügbarWichtiger ist jedoch die ordnungsgemäße Verwendung von Tests. Jedes neue Merkmal sollte mit einer Reihe von Tests ausgestattet sein, um die Funktionalität abzudecken und Regression zu verhindern.
Es gibt ein sehr detaillierter Changelog. Wenn Sie nur an großen Veröffentlichungen interessiert sind, schauen Sie sich die GitHub -Veröffentlichungen an.
Dieses Projekt wird von der .NET Foundation unterstützt.
AnglesSharp wird mit der MIT -Lizenz veröffentlicht. Weitere Informationen finden Sie in der Lizenzdatei.