2012-08-11 3 views
3

QDomDocument을 HTML 콘텐츠와 함께 사용하면 문서 시작 부분에 <!doctype html>이 있으면 내용을 설정하지 못합니다. 그러나 실제로 왜?! 예를 들어 다음 코드 조각을 고려 false의 목록 만QDomDocument가 <!doctype> 태그가있는 HTML 문서의 내용을 설정하지 못했습니다.

QDomDocument doc; 
QString content = "<!doctype html><html><body><a href='bar'>foo</a></body></html>"; 
qDebug() << doc.setContent(content,false,0,0); 
QDomElement docElem = doc.documentElement(); 
QDomNode a = docElem.firstChild(); 
qDebug() << doc.childNodes().size() << docElem.childNodes().size(); 

것도이 코드의 출력되지 않습니다!

답변

0

구문 분석 오류를 확인하려면 setContent에 대한 선택적 인수를 사용하십시오. 그것은 "doctype"의 경우처럼 간단 할 수 있습니다.

+0

나는 또한 그것을 시도했지만,'setContent()'를 호출 한 후에 여전히'QStringList' 오류가 없다! –

+0

doctype 대신 DOCTYPE을 시도 했습니까? BTW, 어떤 버전의 Qt를 사용하고 있습니까? – Troubadour

4

HTML은 XML이고 XML은 XML입니다. 따라서 Qt XML은 HTML 코드를 올바르게 구문 분석 할 수 없습니다. HTML 파일을 구문 분석하려면 Qt XML 모듈 대신 Qt Webkit 모듈을 사용하는 것이 좋습니다. 이를 프로젝트에 포함 시키려면 QT += webkit을 프로젝트 파일에 추가하기 만하면됩니다. 당신의 HTML의 datas를 구문 분석 할 수

, 당신은 이런 식으로 뭔가를해야 할 것 :

QString content = "<html><body><a href='bar'>foo</a></body></html>"; 
QWebPage webPage; 
QWebFrame * frame = webPage.mainFrame(); 
frame->setHtml(content); 
QWebElement htmlElement = frame->documentElement(); // Equivalent of the QDomElement 

추가 정보를 들어, Qt Webkit documentationQWebElement documentation를 참조하십시오.

+0

답변 해 주셔서 감사합니다. 나는 웹킷이 내가 사용하려고하는 것이라고 생각한다. 하지만 어쨌든, HTML은 미리 정의 된 태그 이름을 가진 xml의 일종의 하위 집합입니다. XML 구문 분석기가 HTML을 구문 분석하지 못하는 것을 제외하고는하지 않았습니다. –

관련 문제