2014-07-10 1 views
0

안녕하십니까!JDom2를 사용하여 HTML을 구문 분석 할 때 인용 부호가 IllegalNameException을 발생 시킴

JDOM2를 사용하여 Java에서 HTML 페이지를 구문 분석하여 일부 정보에 액세스하려고합니다.

내 코드는 다음과 같습니다 : 사이트가 포함되어

//Here goes the reading of the site into my String "string" (using NekoHTML) 

org.xml.sax.InputSource is = new InputSource(); 
is.setCharacterStream(new StringReader(string)); 

org.cyberneko.html.parsers.DOMParser parser = new DOMParser(); 
parser.parse(is); 

org.jdom2.input.DOMBuilder builder = new DOMBuilder(); 
org.jdom2.Document doc = builder.build(parser.getDocument()); 

이 몇 가지 특별한 경우를 제외하고 모든 것을 잘 작동 (그냥 내 진짜 소스를하지 않아도,이 코드 블록에 대한 패키지를 추가) quotation - 요소 내에 표시합니다.

<a href="LINK" title="Der "realismo mágico" und die Phantastische Literatur">Der "realismo mágico" und die Phantastische...</a>

그래서, 나는 다음과 같은 오류 추적 얻을 멋진 태그 후 : 그래서

SEVERE: org.jdom2.IllegalNameException: The name "literatur"" is not legal for JDOM/XML attributes: XML name 'literatur"' cannot contain the character """.

를, 이제 내 질문은 : 여기에 내가 무엇을 의미하는지의 예는 무엇입니까 이 오류를 처리 할 수있는 옵션은 무엇입니까? 아마도 NekoHTML에서이 기능을 사용할 수 있습니까 ("setFeature()"를 사용하여), 또는 JDOM에서 사용할 수있는 기능이 있습니까?

아니오 : 태그 안에 인용 부호와 같은 것을 취할 수있는 웹 사이트를 긁는 데 적합한 다른 라이브러리가 있습니까?

시간 내 주셔서 감사합니다.

+0

HTML이 유효하지 않습니다. title 속성의 값에 문제가 있습니다. – Henry

+0

헨리가 말하는 것. JDOM에 제공하려는 DOM이 유효하지 않습니다. '실제'XML에서 'literatur'= ""'분명히 옳지 않은 것을 본질적으로 가지고 있는데, 그것은 JDOM에 속성 (값이 아닌)의 이름이 'literatur' ' – rolfl

+0

글쎄, 나는 그것이 옳지 않다고 생각했지만, 나는 그것을 긁어 모으는 사이트 다. 변경할 방법이 없습니까? 어쩌면 전체 페이지를 살펴볼 필요가 없을까요? 아니면 그냥 다른 파서를 사용하고 있을까요? – Kirinkunhime

답변

1

좋아, 나는 다음과 같은 문제를 해결 :이 경우에 일을 파서로 jTidy로 전환 NekoHTML에 대한 종속성이 없었다 때문에

.

질문에 답변했습니다.

관련 문제