2011-03-24 64 views
0

我試圖從xml文檔中提取值並將其打印出來。 我也想算的孩子(子節點)的數量 每個節點has.That是第一個標籤有2個孩子,第二個標籤具有3如何使用JavaScript從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> 

本是我的JAVASCRIPT文檔

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 2011-03-24 06:25:54

+0

您是否獲得了AJAX結果?我的意思是,XML文件在你的xmlhttp.responseXML中。用螢火蟲檢查。 – 2011-03-24 07:51:17

+0

hi if i write document.write(xmlDoc.getElementsByTagName(「C」)。length);這將計數我得到輸出的標籤總數爲5,這是正確的,但我想單獨計算每個標籤的子節點數。我不知道我應該爲它寫什麼代碼。 – 2011-03-24 07:59:02

回答

2

Element.childNodes方法返回所有類型的節點,包括空白文本節點。它可能不是你想要的。如果您只關心子元素的數量,請使用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;