2017-01-02 12 views
0

AngleSharp 사용 갖는 구문 분석 된 HTML 요소의 CSS 속성을 얻는 방법 :이 CSS

.foo { background-size: 10px 20px; } 

그리고이 HTML :

<span class="foo"></span> 

그리고이 C 번호 : 어떻게

var parser = new HtmlParser(); 
var doc = parser.Parse("http://localhost/test.html"); 
var element = doc.QuerySelector("span.foo"); 

을 나는 관련 배경 너비와 높이를 요소으로 가져 옵니까?

(현재 내가 AngleSharp 버전 0.9.9을 사용하고 있습니다) 모든 C# 코드의

답변

2

첫 번째는 잘못된 것입니다. parser.Parse에 전달한 문자열은 URI가 아닌 HTML 코드입니다. 또한 코드는 CSS 구문 분석을 수행하지 않으며 HTML 파서 만 사용합니다. 따라서 브라우징 컨텍스트를 사용하여 필요한 모든 것을 얻자.

var config = Configuration.Default.WithDefaultLoader().WithCss(); 
var context = BrowsingContext.New(config); 
var document = context.OpenAsync("http://localhost/test.html").Result; 
var element = document.QuerySelector("span.foo"); 
var style = document.DefaultView.GetComputedStyle(element); 
var size = style.BackgroundSize; 

GetComputedStyle 방법은 제한된 방식으로 작동한다는 이러한 요소 (쿼리와 일치 없음)을 존재하지 않으며 경우 element가 null이 될 수 있음을 유의하십시오. 또한 CSS가 외부 스타일 시트에 정의 된 경우 리소스로드를 활성화해야합니다.

희망이 도움이됩니다.

+0

사소한 수정을 한 후 고마워, 코드 작동. 'var config = Configuration.Default.WithDefaultLoader(). WithCss();와 같이 설정에 문서 로딩 지원을 추가하기 만하면됩니다. 그렇지 않으면 문서 본문은 항상 비어 있습니다. – SamuGG

+0

네, 실제로 (저는 CSS 부분에만 초점을 두었습니다. 그래서 설정에서 다른 부분은 건너 뛰었습니다). 나는 내 대답을 수정했다. 귀하의 알림을 보내 주셔서 감사합니다! –