2012-11-28 117 views
3

HTML을 파싱하고 해당 CSS 스타일을 찾아야합니다. HTML과 CSS 분리를 구문 분석 할 수는 있지만 결합 할 수는 없습니다. 예를 들어,이 같은 XHTML 페이지가 있습니다HTML을 파싱하고 CSS 스타일을 얻는 방법

<html> 
<head> 
<title></title> 
</head> 
<body> 
<div class="abc">Hello World</div> 
</body> 
</html> 

내가 "안녕하세요"를 검색하고 클래스 이름을 찾을 수있다, 그리고 그 후 나는 외부 CSS 파일에서의 스타일을 찾아야합니다. 자바, 자바 스크립트, PHP를 사용한 답변은 모두 괜찮습니다. 자바를 사용

+0

모든 요소를 ​​반복하고 스타일을 검사 할 수 있습니다. 스타일이 겹칠 수 있기 때문에 이것은 매우 어려운 작업처럼 들립니다. 당신의 목표에 대해 자세히 설명해 주시겠습니까? 텍스트에 적용된 스타일 만 필요합니까? – nycynik

답변

0

String s = "<body>...<div class=\"abc\">Hello World</div></body>"; 
    Pattern p = Pattern.compile("<div.+?class\\s*?=\\s*['\"]?([^ '\"]+).*?>Hello World</div>", Pattern.CASE_INSENSITIVE); Matcher m = p.matcher(s); 
if (m.find()) { 
    System.out.println(m.group(1)); 
} 

인쇄 ABC

+0

HTML이 실제로 일정합니까? 그렇다면 아마 소스 *를보고 정보를 찾는 것일 수도 있습니다. : P 그렇지 않으면 정규 표현식이 문제를 일으킬 것입니다. 예를 들어, '

Hello World
'은 "broken"과 일치하고 캡처합니다. – cHao

+0

[오른쪽, 정규식을 사용하여 HTML을 구문 분석] (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454) – GriffeyDog

+1

절대로 HTML을 구문 분석하지 마십시오. 또는 x 정규 표현식을 사용하여 XML을 확인하십시오 http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags – ozhan

0

외부 파일에서 스타일 시트를 파싱 할 기회가 있다는 것을 이해 했으므로 작업을 쉽게 해결할 수 있습니다. 먼저 jsoup으로 html 파일을 구문 분석하면 복잡한 html 파일을 더 쉽게 파싱하는 데 도움이되는 선택기 구문과 같은 jquery를 지원합니다. 그런 다음이 previous 해결책을 확인하여 CSS 파일을 구문 분석하십시오. 나는 이러한 라이브러리를 사용하여 모든 솔루션을 내부적으로 수행 했으므로 전체 솔루션으로 가지 않으므로이 두 가지를 결합하는 코드를 작성하는 것만으로 작업해야합니다.

2

HTML 파서 인 java에서 jsoup 라이브러리를 사용하십시오. 당신은 당신이 이런 식으로 뭔가를 할 수 있습니다 예를 들어 예를 here
을 위해 볼 수 있습니다

String html="<<your html content>>"; 
Document doc = Jsoup.parse(html); 
Element ele=doc.getElementsContainingOwnText("Hello World").first.clone(); //get tag containing Hello world 
HashSet<String>class=ele.classNames(); //gives you the classnames of element containing Hello world 

당신은 당신의 요구에 맞게 더 라이브러리를 탐색 할 수 있습니다.