2013-07-16 4 views
1

나는 CKEditor에서 얻은 일반 텍스트로 html 데이터를 가지고있다. 여기에는 테이블 구조와 html 마크 업이 포함되어 있습니다.일반 텍스트에서 html 마크 업을 추출하는 방법

테이블 구조와 td 데이터 만 추출하는 방법이 있는지 궁금합니다.

평이한 텍스트 내가

//tableData contains everything the user type in CKEditor. 
var table = tableData.getElementsByTagName ('table'); 

을 시도했지만 난 그냥이 텍스트는 dom에 더 있습니다 실현되지 뭔가
first table....bunch more texts here... 

<table> 
    <tr><td> data1 </td></tr> 
    <tr><td> data2 </td></tr> 
    <tr><td> data3 </td></tr> 
</table> 

end of table. test data here... 

<table> 
    <tr><td> data4 </td></tr> 
    <tr><td> data5 </td></tr> 
    <tr><td> data6 </td></tr> 
</table> 

end of second table and bunch more texts.... 

처럼 될 수있다. 그들은 단지 CKEditor에서 추출한 평범한 텍스트입니다.

table 데이터를 어떻게 추출합니까?

도움 주셔서 감사합니다.

+0

'tableData'를 설정하는 데 사용할 코드를 표시 할 수 있습니까? – Jacob

+0

@jacob CKEditor에서 얻은 평범한 텍스트입니다. var tableData = CKEDITOR.instances [id] .getData() – FlyingCat

답변

2

DOM 노드를 추출 할 문자열을 tableData 문자열로 가정합니다.

구문 분석을 피하기 위해이 문자열을 임시 DOM 요소에 삽입 할 수 있습니다.

var temp = document.createElement('div'); 
div.innerHTML = tableData; 

// Retrieve all tables. 
var tables = div.getElementsByTagName('table'); 
0

다음과 같이 원하는 모든 테이블을 배열로 가져온 다음 반복합니다. 다음은이를 실제 행동으로 보여주는 바이올린입니다. http://jsfiddle.net/M5nMY/. 여기서는 tabledata가 테이블을 포함하는 DOM 요소의 ID라고 가정합니다.

var tableData = document.getElementById('tabledata'); 
var tables = tableData.getElementsByTagName('table'); 
var data = new Array(); 
for(var k = 0; k < tables.length; k++){ 
    var table = tables[k]; 
    for(var i=0; i< table.rows.length; i++){ 
     var row = table.rows[i].cells; 
     for(var j=0; j < row.length; j++){ 
     data.push(row[j].innerHTML); 
     } 
    } 
} 

이 경우 주, I는 한 번에 하나의 행으로 배열 한 모든 테이블에서 모든 데이터를 가압했다.

관련 문제