Anglesharp는 HTML, SVG 및 MathML과 같은 각도 기반 하이퍼 텍스트를 구문 분석 할 수있는 .NET 라이브러리입니다. 유효성 검사가없는 XML도 라이브러리에서 지원됩니다. Anglesharp의 중요한 측면은 CSS를 구문 분석 할 수 있다는 것입니다. 포함 된 파서는 공식 W3C 사양에 기반을두고 있습니다. 이는 주어진 소스 코드의 완벽하게 휴대용 HTML5 DOM 표현을 생성하고 상록수 브라우저의 결과와 호환성을 보장합니다. 또한 querySelector 또는 querySelectorAll 과 같은 표준 DOM 기능도 트리 트래버스를위한 작업입니다.
⚡⚡ 앵글 슈트 0.9에서 앵글 션으로 0.10 이상으로 이동하십시오 (1.0 포함)? 우리의 마이그레이션 문서를보십시오. ⚡⚡
BrowsingContext 는 브라우저 탭과 같습니다 - .NET에서 제어). HtmlagilityPack 과 같은 유사한 라이브러리의 장점은 노출 된 DOM이 공식 W3C 지정된 API를 사용하고 있다는 것입니다. 즉, querySelectorAll 과 같은 것들조차도 Anglesharp에서 사용할 수 있다는 것입니다. 또한 파서는 HTML 5.1 사양을 사용하여 오류 처리 및 요소 수정을 정의합니다. Anglesharp Library는 표준 준수, 상호 작용 및 확장성에 중점을 둡니다. 따라서 웹 개발자들은 현대식 브라우저에서 DOM을 사용하여 알 수 있듯이 C#과 함께 일하는 웹 개발자에게 제공합니다.
Anglesharp의 성능은 브라우저의 성능에 매우 가깝습니다. 매우 큰 페이지조차도 밀리 초 이내에 처리 할 수 있습니다. Anglesharp는 메모리 할당을 최소화하고 불필요한 객체 생성을 피하기 위해 내부적으로 요소를 재사용하려고합니다.
간단한 예제는 데이터 검색을 위해 Wikipedia 웹 사이트를 사용합니다.
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 ) ;또는 명시 적 유형과 동일합니다.
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 ) ;예에서는 다음과 같습니다.
Anglesharp의 모든 컬렉션은 LINQ 문을 지원합니다. Anglesharp는 또한 공식 DOM에서 찾을 수없는 요소 컬렉션에 유용한 확장 방법을 제공합니다.
Anglesharp는 .NET Standard 2.0 호환 라이브러리로 만들어졌습니다. 여기에는 다음이 포함되지만 이에 국한되지는 않습니다.
Anglesharp의 문서는 문서 폴더에 있습니다. 더 많은 사례, 모범 사례 및 일반 정보를 찾을 수 있습니다. 이 문서에는 자주 묻는 질문 목록도 포함되어 있습니다.
Wiki에서 언급 된 일부 하이퍼 참조를 따르면 더 많은 정보가 제공됩니다. 심층적 인 기사는 CodeProject에 게시되며 Github의 Wiki에 링크가 배치됩니다.
이 프로젝트는 HTML, SVG, MATHML 및 CSS 용 W3C DOM을 CLR에 밀접하게 구현하는 것을 목표로합니다. 아이디어는 기본적으로 JavaScript에서 할 수있는 C#의 DOM으로 모든 것을 수행 할 수 있다는 것입니다 (물론 더 많은).
일부는 여전히 (완전히 지정된 / 정확한) 구현을 놓칠 수 있지만 DOM의 대부분은 포함됩니다. V1.0의 목표는 공식 W3C 사양에 따라 실질적으로 관련된 모든 부품을 구현하는 것입니다 (Whatwg의 유용한 확장).
API는 DOM4 사양에 가깝지만 이름 지정은 .NET 규칙에 적용되도록 조정되었습니다. 그럼에도 불구하고, Anglesharp를 예를 들어, JavaScript 엔진 인 예를 들어 공식 사양에서 필드의 상태를 나타내는 해당 인터페이스 (및 방법, 속성, ...)에 속성이 배치되었습니다. 이를 통해 공식 API로 DOM 객체의 자동 생성이 가능합니다.
이것은 장기 프로젝트로, 결국 가장 중요한 각도 브래킷 기반 하이퍼 텍스트에 대한 최첨단 파서가됩니다.
우리의 희망은이 프로젝트에서 웹 파싱 및 라이브러리 주변의 커뮤니티를 구축하는 것입니다. 지금까지 우리는 큰 기여를했지만 그 목표는 완전히 달성되지 않았습니다. 도와주고 싶습니까? 우리와 연락하십시오!
Anglesharp가 현재 누락 된 기능을 알고 있고 기능을 기꺼이 구현하려는 경우 기여는 환영받는 것 이상입니다! 또한 정말 멋진 아이디어가 있다면 부끄러워하지 마십시오. 듣고 싶습니다.
API를 개선하는 방법 (또는 누락 된 내용)이있는 경우 게시물 / 메시지도 환영합니다. 예를 들어, 과거에는 Anglesharp (예 : HTMLDocument 또는 HtmlDocument )가 사용한 일부 스타일에 대한 논의가 진행되었습니다. 결국 Anglesharp는 HTMLDocument (적어도 라이브러리 외부에서 볼 수 있음) 사용을 중단했습니다. 이제 Anglesharp는 IDocument , IHtmlElement 등과 같은 이름을 사용합니다. 이러한 변화는 그러한 유익한 토론 없이는 불가능했을 것입니다.
이 프로젝트는 항상 추가 기여자를 찾고 있습니다. 기여할 코드가없고 개선에 대한 아이디어, 버그 보고서 또는 문서의 실수가 있더라도. 이것들은이 프로젝트를 계속 활성화시키는 기여입니다.
Github 계정을 사용하여 지원하는 Gitter Chat에서 라이브 토론이 진행될 수 있습니다.
자세한 내용은 기여 가이드 라인에 있습니다. 모든 기고자는 기고자 파일에서 찾을 수 있습니다.
이 프로젝트는 또한 공헌자 계약이 정의한 행동 강령을 채택하여 지역 사회에서 예상되는 행동을 명확히했습니다.
자세한 내용은 .NET Foundation 행동 강령을 참조하십시오.
Anglesharp를 자주 사용하지만 적극적으로 참여하여 프로젝트를 지원할 시간이 없다면 Anglesharp 프로젝트가 조명을 유지하는 것이 여전히 관심이있을 수 있습니다.
따라서 우리는 BountySource를 통해 후원 모델을 만들었습니다. 모든 기부금은 환영 받고 감사합니다. 우리는 주로 전용 개발 시간에 돈을 써야합니다. 개선 해야하는 앵글 슈트를 개선하고 .NET의 웹 유틸리티 에코 시스템에 투자하여 (예 : JavaScript 엔진, 기타 구문 분석기 또는 앵글 래프를위한 렌더러)에 투자 할 것입니다.
자세한 내용은 BountySource를 방문하십시오.
Anglesharp는 가장 최근의 C# 버전으로 작성되었으므로 Roslyn을 컴파일러로 요구합니다. Windows에서는 Visual Studio 2019+와 같은 IDE를 사용하는 것이 좋습니다. 또는 VSCODE (OmnishArp 또는 다른 적합한 언어 서버 프로토콜 구현)는 다른 플랫폼에서 선택한 도구 여야합니다.
코드는 가능한 한 깨끗해 지려고합니다. 특히 다음 규칙이 사용됩니다.
-Async 접미사 방법을 사용하십시오그러나 더 중요한 것은 적절한 테스트 사용법입니다. 모든 새로운 기능에는 기능을 다루고 회귀 방지를 방지하기위한 일련의 테스트 세트가 있어야합니다.
매우 상세한 교체가 존재합니다. 주요 릴리스에 관심이 있다면 Github 릴리스를 살펴보십시오.
이 프로젝트는 .NET Foundation에서 지원합니다.
Anglesharp는 MIT 라이센스를 사용하여 릴리스됩니다. 자세한 내용은 라이센스 파일을 참조하십시오.