2014-11-13 3 views
0

Java에서 이러한 종류의 HTML을 구문 분석 할 방법을 찾고있다.Java - 이런 종류의 HTML을 구문 분석하는 방법을 모른다.

<tr class="cBackHeader backCat" ...> 
    <th class="padding" ...> 
     ... 
     <a href="{{URL CATEGORY}}" class="cHeader">{{TITLE CATEGORY}}</a> 
    </th> 
</tr> 
(<tr class="sujet..." ...> 
    ... 
    <td ... class="subjectCase3" ...> 
     <a href="{{URL TOPIC}}" class="cCatTopic" title="{{ID TOPIC}}">{{TITLE TOPIC}}</a> 
    </td> 
    ... 
</tr>)+ 

나는 {{}} 사이의 각 변수를 적절하게 배열하고 싶습니다. 나는이 패턴 첫 번째 부분 얻기 위해 관리했습니다 :

<th class=\"padding\".*?>.*?<a href=\"(.+?)\" class=\"cHeader\">(.+?)</a></th> 

을하지만 두 번째 부분으로 수행하는 방법을 모른다 (그들은 많은 td.subjectCase3 될 수있다).

편집 : 여기 Jsoup를 사용한 내 솔루션이 있지만이 패턴 및 매처보다 최적화가 적습니다.

Document document = Jsoup.parse(response); 
Element tmp; 
Elements elements = document.select("tr.cBackHeader,tr.sujet"); 
for (Element el : elements) { 
    if (el.hasClass("cBackHeader")) { 
    tmp = el.select("a.cHeader").first(); 
    result.add(new TopicItem(null, tmp.ownText())); 
    } else if (el.hasClass("sujet")) { 
    tmp = el.select("td.sujetCase3 a").first(); 
    result.add(new TopicItem(new Topic(tmp.attr("title"), tmp.attr("href"), tmp.ownText()), null)); 
    } 
} 

어떻게 생각하십니까?

+2

DOM 구문 분석기 종속성 가져 오기 그걸 써. 정규식이 아닙니다. HTML을 파싱하는 Regexes는 실수 방지가되어 있지 않습니다. 특히 일치하는 파일이이 HTML과 비슷할 경우 특히주의를 기울일 것입니다. – Unihedron

+0

Jsoup와 같은 DOM 파서? – BkSouX

+0

예, Jsoup는 신뢰할 수있는 파서 중 하나입니다. 그걸 써. – Unihedron

답변

-1

내가 정규식 표현 사용합니다 :

(href="{{).+?[}] 

항상 당겨 것이다 : HREF를 = "{{URL의 주제} 자바 그런

나는 사항 String.split을 사용() 메서드를 사용합니다.

String string = "href="{{URL TOPIC}"; 
String[] parts = string.split("{"); 
String part1 = parts[0]; // href=" 
String part2 = parts[1]; // "" 
String part3 = parts[2]; // URL TOPIC} 

거기에서 "}"후행을 트림합니다.

return part3.trim("}"); 

귀엽지 만 결과가 좋습니다.

+0

미안하지만 근본적으로 당신이 정말로이 일을하는 법을 알지 못한다면 당신이 끔찍한 방법으로 그것을한다는 것을 알게되면 어쩌면 그것이 옳지 않을 수도 있습니다. 주제가 조언을 제공합니다. 그냥 내 2c. –

+0

자신감을 보여주기위한 향상된 대답. – Disgaea

관련 문제