2011-03-24 5 views
0

XML 문서에서 값을 추출하여 인쇄하려고합니다. 는 또한 아이의 수 (하위 노드) 각 노드 has.That가 카운트 할 제 태그 2 아이 및 제 2 태그는 3Javascript를 사용하여 XML 문서에서 값을 추출하는 방법

이것은 XML 문서

<?xml version="1.0" ?> 
    <A> 
    <a1>a1</a1> 
    <a2>a2</a2> 
    <B> 
    <C>2</C> 
    <C>3</C> 
    </B> 
    <B> 
    <C>4</C> 
    <C>5</C> 
    <C>6</C> 
    </B> 
    </A> 

이것은 보유 MY 자바 스크립트 문서

if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
xmlhttp.open("GET","extractexample.xml",false); 
xmlhttp.send(); 
xmlDoc=xmlhttp.responseXML; 
xmlObj=xmlDoc.documentElement; 
document.write(xmlDoc.getElementsByTagName("B")[0].childNodes[0].nodeValue); 
+0

겪고있는 문제는 무엇입니까? – slifty

+0

AJAX 결과를 얻고 있습니까? XML 파일이 xmlhttp.responseXML에 있습니다. 불 덩어리로 확인하십시오. –

+0

안녕하세요 내가 document.write (xmlDoc.getElementsByTagName ("C"). 길이를 쓰는 경우); 이것은 총 태그 수를 계산합니다. 출력은 5로 맞지만 각 태그의 자식 노드 수를 개별적으로 계산하고 싶습니다. 어떤 코드를 써야할지 모르겠다. –

답변

2

Element.childNodes 방법은 공백의 textnodes를 포함한 노드의 모든 유형을 반환한다. 그것은 당신이 원하는 것이 아닐 수도 있습니다. 하위 요소의 개수 만 신경 쓰면 childElementCount을 사용하십시오.

var b = xmlDoc.getElementsByTagName("B")[0]; 
alert(b.childElementCount); //should output 2 

IE에서 시도하지 않았지만 작동하지 않을 수 있습니다. 그렇지 않으면 요소 목록을 원하면 childrenchildren을 HTML이 아닌 문서에서 지원하지 마십시오. 이 기능을 사용해보십시오 :

function getChildren(element) { 
    var nodes = element.childNodes; 
    var children = []; 
    for (var i = 0; i < nodes.length; i++) { 
    if (nodes[i].nodeType == Node.ELEMENT_NODE) children.push(nodes[i]); 
    } 
    return children; 
} 

getChildren(b).length; 
관련 문제