2013-08-01 3 views
5

준 HTML 텍스트는 다음과 같습니다. Simple<br> text <b>simple</b> text simple <BR><BR>text simple text, 나는 구문 분석하고 dom document을 만들고 싶습니다.java에서 유사 -html 텍스트를 구문 분석하는 방법은 무엇입니까?

DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); 
InputSource source = new InputSource(new StringReader(
Document doc = builder.parse(source); 

오류가 발생합니다 : org.xml.sax.SAXParseException; The element type "br" must be terminated by the matching end-tag

내가 원하지 않는 모든 <br><br></br>, 모든 솔루션 또는 조언에 의해 대체 내가 이것을 시도하지만 문제는, 닫히지 않은 태그 함께?

+4

아마도 DOM으로 가져올 수 없습니다. [jSoup] (http://jsoup.org/)와 같이 조심성있는 HTML 파서를 사용해야합니다. 웹 브라우저처럼. –

+0

나는 그것이 HTMLEditorKit으로 할 수 있다고 생각한다 ... – linski

+0

@BoristheSpider 표준 자바로 할 수있는 jSoup에 대한 필요성, 내 대답을 참조하십시오. – linski

답변

3

jsoup을 사용하면 편리합니다.

2

잘 구성된 모든 HTML을 다시 써야합니다. 기본적으로 텍스트를 살펴보고 모든 시작 태그 목록을 만듭니다. 해당 종료 태그를 찾으면 목록에서 제거 할 수 있습니다. 당신이 끝났을 때, 그리고 아직도이 목록에 엔트리가 있다면, 잘 형성되어 있지 않다는 것을 알 것입니다.

문제는 닫히지 않은 태그를 삽입하는 위치입니다. 다음 단어 바로 뒤에 해당 닫기 태그를 삽입 할 수 있습니다. 귀하의 경우에는 br 태그를 br/tag로 대체 할 수 있습니다 (유일한 경우). 이 방법은 문자열을 문서의 내용을 represntes.

string = string.replace("<br>", "<br />"); 
관련 문제