2012-03-05 2 views
0

HTML 섬이 포함될 수있는 텍스트가 있습니다.Java에서 HTML 조각 추출

예 :

qwwdeadaskdfdaskjfhbsdfkf<a href="/cookbook/modifying-data/set-attributes">Set attribute values</a>gfkjgfkjrgjgjgjgjgroggjrog <b>jsoup</b>sdflkjsdfsfklsfklfjsfkljsfljsf<a href="/apidocs/org/jsoup/Jsoup.html#parse(java.lang.String)" title="Parse HTML into a Document.">Jsoup.parse(String html)</a>skgjdfgkjdfgkldfjgdfkgljdfg 

가 어떻게 그 HTML 조각을 추출 할 수 있습니다?

+1

HTML 텍스트와 HTML이 아닌 텍스트 간의 경계를 정의하는 것은 무엇입니까? –

+0

@IraBaxter : 나는 그가 HTML 태그를 의미한다고 생각한다. –

+0

당신이하는 일은 무엇이든 [정규식을 고려하지 마십시오] (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags). –

답변

0

Java는 XML에 대한 DOM 및 SAX 구문 분석을 모두 지원하지만 둘 다 문서의 형식이 올바른 것이 요구됩니다. 따라서 귀하의 예제는 파싱되지 않습니다. 잘 작성되지 않은 HTML 스캔을 지원하는 NekoHTML (http://nekohtml.sourceforge.net/) 프로젝트가 있습니다.

0

텍스트 덩어리로 HTML 조각을 찾은 다음 텍스트 주위에 태그를 묶은 다음 java.xml.parsers.DocumentBuilder를 사용하여 DOM 트리를 만듭니다.

기본 개념 (그리고 생략 많은) 단지

String fragment = "<wrap_node>" + orig_text + "</wrap_node>"; 
Document d = builder.parse(fragment); 

태그 등 ... 누락 된 말, 부적절한 중첩을 잘 형성되지 않는 경우 ...이 작동하지 않습니다 만, 내가 잘못된 것을 거절하기를 원하기 때문에이 일은 나를 위해 일합니다.