2011-02-04 4 views
4

현재 분석을 위해 웹 페이지를 가져 오는 자동화 프레임 워크와 함께 작업하고 있으며 처리를위한 문자열로 표시됩니다. Rhino Javascript 엔진은 반환 된 웹 페이지를 구문 분석하는 데 도움을줍니다.자바 스크립트로 DOM 트리에 HTML 문자열을로드하십시오.

문자열 (완전한 웹 페이지)을 DOM 표현으로로드 할 수 있다면 내용을 분석하고 분석 할 수있는 아주 멋진 인터페이스를 제공하는 것 같습니다.

Javascript 만 사용하면 가능하며 실현 가능한 개념입니까?

편집 : 대한 질문을 분해합니다

명확히 :

 

var $mywebpage = '<!DOCTYPE HTML PUB ...//snipped//... </body></html>'; 
 

그것이 현실적인/수 어떻게 든 그것을로드하는 것입니다 : 나는 그런처럼 포함 자바 스크립트에서 문자열 HTML을 말해봐 DOM 객체에?

+0

내가 바로 이해하면, 당신이 할 수있는 'document.body.innerHTML = "string"' – JCOC611

답변

0

이 변수에 html이 들어 있으면 DOM 객체 (예 : id)로로드 할 수 있습니다. 내 문제를 해결에 유용 나는이 JonDavidJohn의 답변을 받아들이는거야

var mywebpage = '<!DOCTYPE HTML PUB ...//snipped//... </body></html>'; 

element = document.getElementById('dom-id'); //<-- element you are loading it into. 

element.innerHTML = mywebpage; 
+0

올바른 방향으로 나아가는 단계입니다. Rhino를 사용하고 있기 때문에 실제로 DOM 객체에 액세스하거나 '생성'할 수 있는지 확실하지 않습니다. 나는 이것을 계속보고 더 많은 것을 배울 때마다 업데이트 할 것이다. – xelco52

+0

좋아, 글쎄, 당신은 html의 문자열을 가지고, 그것은 어떤 DOM 요소를 선택로드합니다. – jondavidjohn

1

, 미래에이를 볼 수 있습니다 다른 사람이 추가로 답변을 포함 생각했다.

JavaScript는 HTML 문자열을 DOM 요소로로드 할 수 있지만 DOM은 ECMAScript 코어의 일부가 아니기 때문에 Rhino에서 실행되는 스크립트에서는 사용할 수 없습니다.

Rhino 1.6에서 구현 된 좋은 대안은 E4X입니다. DOM 구현은 아니지만 개념적으로 비슷한 기능을 제공합니다.

1

문서가 XHTML 인 경우 XML 파서로 문서를 구문 분석 할 수 있습니다. E4X는 내장 Java XML 파싱 인터페이스처럼 작업을 훌륭하게 처리 할 것입니다. 그러나, 그것은 HTML을의 경우

http://ejohn.org/blog/bringing-the-browser-to-the-server/

http://www.envjs.com/

:

env.js 라이브러리는 코뿔소에서 브라우저 환경을 에뮬레이트하도록 설계되어 있지만 나는 문서도 준수 XHTML 할 필요가 생각 브라우저가 마크 업이 파싱되는 방법에 매우 관대하도록 설계되어 있기 때문에 더 어렵습니다. 자바 HTML 파서의 목록을 보려면 여기를 참조하십시오 : 이것은 해결하기 쉬운 문제가

http://java-source.net/open-source/html-parsers

없습니다. 사람들은 파싱 기능을 사용하기 위해 JNI를 통해 Mozilla Gecko 엔진을 Java에 내장하기까지했습니다.

나는 다음과 같은 순수 자바 프로젝트를 들여다 추천 :

http://lobobrowser.org/cobra.jsp

로보 프로젝트의 목표는 순수 자바 웹 브라우저를 개발하는 것입니다.그것은 매우 흥미로운 프로젝트, 그리고 많은 거기하지만 다음 링크에 설명 된대로 난 당신이 자신의 응용 프로그램에 아주 쉽게 파서 독립을 사용할 수 있습니다 믿습니다

http://lobobrowser.org/cobra/java-html-parser.jsp

관련 문제