2012-03-30 6 views
-1

웹 및 StackOverflow를 검색했지만 가지고있는 문제와 비슷한 것을 찾지 못했습니다. 나는 그것을 구문 분석하려고javascript DOMParser 문자열이 아닌 문서를 구문 분석합니다.

var txtBoxForm = '<script src="http://ADDRESS"></script><noscript><a href="http://ADDRESS" target="_blank"><img src="http://ADDRESS" border=0 width=728 height=90></a></noscript>'; 

:

나는 울부 짖는 HTML 문자열을

parser = new DOMParser() 
xmlDoc = parser.parseFromString(txtBoxForm, "text/xml"); 
alert(xmlDoc); 
alert(xmlDoc.firstChild.nodeName); 
alert(xmlDoc.firstChild.firstChild.nodeName); 
alert(xmlDoc.firstChild.firstChild.firstChild.nodeName); 
alert(xmlDoc.firstChild.firstChild.firstChild.firstChild.nodeName); 
문제가

그 문자열은 태그로 시작하고 자식 노드가 없더라도 , 나는 경고에서 벨로우즈 반환을 얻는다 :

alert(xmlDoc); -> [Object document] 
alert(xmlDoc.firstChild.nodeName); -> html 
alert(xmlDoc.firstChild.firstChild.nodeName); -> body 
alert(xmlDoc.firstChild.firstChild.firstChild.nodeName); -> parseerror 
alert(xmlDoc.firstChild.firstChild.firstChild.firstChild.nodeName); -> h3 

그래서 내 질문은 :

  1. 문자열은 구문 분석 코드가 <script>으로 시작하지 않으므로 어떻게 되나요?
  2. 내가 잘못하고 있니?
  3. 어떻게하면 해당 문자열 코드를 올바르게 구문 분석 할 수 있습니까? 내 의도는 스크립트 및 img 태그에서 src를 캡처하는 것입니다.

도와주세요. 감사합니다. .

+0

왜 내가 -1을 얻었나요 ?? – decio

답변

2

스크립트 태그를 DOMParser에 전달할 수없는 것 같습니다. 몇 가지 다른 문제가있었습니다.

  • 하는 XML 문서는 하나의 루트 엘리먼트를 가져야한다 (나는 <doc></doc>와 코드를 포장)
  • 스크립트가 허용되지 않습니다 당신은 당신의 속성을 인용한다
  • (나는 <scripto>로 변경)

http://jsfiddle.net/mendesjuan/aVQaP/4/

var txtBoxForm = 
    '<doc>'+ 
    '<scripto src="http://ADDRESS"></scripto>'+ 
    '<noscript>' + 
     '<a href="http://ADDRESS" target="_blank">'+ 
     '<img src="http://ADDRESS" border="0" width="728" height="90" />'+ 
     '</a></noscript></doc>'; 

var parser = new DOMParser(); 
var xmlDoc = parser.parseFromString(txtBoxForm, "text/xml"); 

// outputs http://ADDRESS 
console.log(xmlDoc.getElementsByTagName("scripto")[0].getAttribute("src")); 
// outputs http://ADDRESS 
console.log(xmlDoc.getElementsByTagName("img")[0].getAttribute("src"));​ 
+0

아니요. 그냥 시도해 보았습니다. 그 경보에 대해 위와 같은 결과를 얻었습니다 : ( – decio

+0

@decio 조금 수정 한 예, 더 이상 '' –

+0

지금 당장 시도하고 결과를 게시 할 것입니다. @Daxcode에 응답하면서 다른 문제가 있습니다. html 코드를 재 형식화하면서 첫 번째 문제를 해결 한 후에 그 문제를 해결할 것입니다 .thx – decio

0

구문 분석하려는 문자열의 형식이 잘못되었습니다. 예를 들어 간단한 문자열로 스크립트를 실행하면 '<div><p>test</p></div>', 예상대로 요소를 구문 분석하고 있습니다. 내가 믿고있어

는 보안 정책이 스크립트로드 조작 등을 방지하기 위해, 같은 스크립트 태그를 잡아 허용하지 않는 대신 정규식을 사용에 관한

, 아래 당신의 src 값을 제공 예상대로 문자열에서 두 속성 모두 가져옵니다.

<script type ="text/javascript" language="javascript"> 
<!-- 
var txtBoxForm = '<div><script src="http://ADDRESS"></script><noscript><a href="http://ADDRESS" target="_blank"><img src="http://ADDRESS" border=0 width=728 height=90></a></noscript></div>'; 
var exp = /src="([^"]*)"/i; 
console.log(exp.exec(txtBoxForm)); 

--> 
</script> 
+0

예, 형식이 올바르지는 않지만 광고용 자바 스크립트 태그를 게시 한 사용자가 양식 텍스트 필드에 삽입 한 일반 코드입니다. 의도하지 않은 코드가 없도록 콘텐츠를 처리해야하므로 나중에 표시 할 수 있습니다. 당신이 말한 바로는, Daxcode, 그것을 어떻게 해석 할 수 있도록 코드를 preformat해야합니까? 나는 아무 쓸데없는 끝에 단지 '

' to the beginning and a '
'을 추가하려고 시도했다. – decio

+0

src 속성 값을 얻기 위해 정규 표현식 대신 사용하려고 시도 했습니까? – Daxcode

+0

정규식 대신 예제를 사용하여 답변을 확장했습니다 – Daxcode

관련 문제