在javascript中循环XML并获取值

时间:2011-09-22 11:56:05

标签: javascript xml

我试图打印出xml字符串的内容但无法使其工作。谁能看到我的错误呢?

XML字符串:

<row>
    <text>Hello</text>
    <value>1</value>
</row>
<row>
    <text>Hello2</text>
    <value>2</value>
</row>
<row>
    <text>Hello3</text>
    <value>3</value>
</row>

XML是一个发送到showXML函数的字符串。

使用Javascript:

function showXML(xmlText) {
    var ele = document.getElementById("Content");
    ele.style.display = "block";
    var doc = StringtoXML(xmlText); //Coverts string to XML

    var html = "";

    var rows = doc.getElementsByTagName("row");
    for (var i = 0; i < rows.length; i++) {     
        var text = rows[i].getElementsByTagName("text").nodeValue;
        var value= rows[i].getElementsByTagName("value").nodeValue;  
        html = html + " text: " + text + " value: " +value;   
    }  
    ele.innerHTML = html;
} 

function StringtoXML(text){
if (window.ActiveXObject){
    var doc=new ActiveXObject('Microsoft.XMLDOM');
    doc.async='false';
    doc.loadXML(text);
} else {
    var parser=new DOMParser();
    var doc=parser.parseFromString(text,'text/xml');
}
return doc;
}

所有帮助的Thx!

1 个答案:

答案 0 :(得分:1)

以下是for循环中所需的更正

    var text = rows[i].getElementsByTagName("text")[0].childNodes[0].nodeValue;
    var value= rows[i].getElementsByTagName("value")[0].childNodes[0].nodeValue;  

getElementsByTagName返回一个数组/集合。