2010-06-08 2 views
0

에서 구문 분석 CSS는 누군가가 나에게 .NET에서 마크 업의 페이지에 태그 사이에 CSS를 조회하는 효율적인 방법을 말할 수 있습니까?밖으로 <style> 요소

저는 재귀, Split() 및 CompareTo()를 사용하는 방법을 생각해 냈지만 실제로는 길었습니다. 그리고 훨씬 더 짧고 (영리한) 방법을 사용해야한다고 생각합니다. 같은.

는 한 페이지에 두 개 이상의 요소를 가질 수 있음을 유의하시기 바랍니다, 그리고 요소 중 하나 또는 될 수있다.

답변

0

Regex를 사용해보세요.

고토 : CSS로 http://gskinner.com/RegExr/ 붙여 넣기 HTML 및 상단에이 표현을 사용 : 여기

<style type=\"text/css\">(.*?)</style> 

는 C# 버전입니다 :

using System.Text.RegularExpressions; 

Match m = Regex.Match(this.textBox1.Text, "<style type=\"text/css\">(.*?)</style>", RegexOptions.Singleline); 

if (m.Success) 
{ 
    string css = m.Groups[1].Value; 
    //do stuff 
} 
+1

정규식으로 html을 파싱 하시겠습니까? 얘들 아, 무엇을 알지? –

+0

Regex의 문제점은 무엇입니까? 결과를 얻을 때까지 string.split()을 사용하는 것을 좋아합니까? – tcables

+0

이것은 실제로 제가 찾은 해결책입니다. 가까운 장래에 HTML Agility Pack을 살펴보기는하지만 구현하기가 쉽고 내가 원하는 것을 달성하는 가장 직접적인 방법입니다. – awj

1

다음은 C#을 CSS 파서입니다. 당신이 필요로하는 것을해야합니다.

http://www.codeproject.com/KB/recipes/CSSParser.aspx

+0

난 이미 CSS를 처리하는 코드를 가지고 , 나는 단지 CSS를 수업에 끌어 들이기위한 좋은, 깨끗한 방법이 필요하다. 제목이 내가 여기서 뭘 찾고 있어요 것이 아니다 그 속성에 대한 CSS를 구문 분석, 말한다처럼 당신이 가리키는 CSS 파서는, 더 우려하고있다; 나는 단지 CSS를 얻고 싶다. – awj

+0

방금 ​​코드를 다운로드했으며 매우 유망 해 보입니다. 이상적인 솔루션은 tcabls (위)의 정규식을 사용하고 CSS를 구문 분석 한 것입니다. 정말 간단 하나의 방법 또는 두 가지 기대했다하지만 – awj

3

아마 당신이 페이지에 스타일의 접근을 DOM 제공 HTML Agility Pack 가고 싶어. CSS 데이터의 청크를 선택할 수는 있지만 실제로이 데이터를 키/값 쌍으로 구문 분석하지는 못합니다. X-Path 스타일 표현식을 사용하여 관련 HTML 조각을 얻을 수 있습니다.

편집 : HTML을 민첩성 팩의 일반적인 사용의 예는 다음과 같습니다.

HtmlDocument doc = new HtmlDocument(); 
doc.Load("file.htm"); 
var nodes = doc.DocumentElement.SelectNodes("//a[@style"]); 
//now you can iterate over the selected nodes etc 
+0

이 더 많은 내가 무엇을 찾고처럼 보인다. 결과를 조사하고 게시 할 것입니다. 감사. – awj

+0

이것은 매우 간단합니다. 일반적인 사용 예는 내 업데이트를 참조하십시오. –

+1

'var nodes = doc.DocumentNode.SelectNodes ("// a [@style]");'더 최신 버전을 위해서 – BurnsBA