使用javascript从xml标签中读取所有值

时间:2018-04-13 01:37:21

标签: javascript jquery xml xmlhttprequest

我目前正在阅读xml文件,到目前为止我已经成功读取了xml文件但接下来出现了问题,而不是逐个读取xml文件标签我想要读取items标签内的标签和提取每一个的价值

到目前为止这是我得到的



var xmlDoc;

var xhr = new XMLHttpRequest();
xhr.open('GET', 'prueba.xml');
xhr.send();
xhr.onreadystatechange = function(){
	xmlDoc = xhr.responseXML;
	var items = xmlDoc.getElementsByTagName("items")[0];
	for(i=0;i<items.length;i++){
		item = items[i];
		$(item).each(function(i,val){
			console.log(val)
		})
	}
}
&#13;
&#13;
&#13;

这里是xml文件

&#13;
&#13;
<!DOCTYPE StreamControl>
<items>
 <timestamp>1510794812</timestamp>
 <nombre>ayy</nombre>
</items>
&#13;
&#13;
&#13;

我认为我关闭了,有什么提示吗?

1 个答案:

答案 0 :(得分:1)

试试这个:使用node.firstChild.nodeType === 3 && node.firstChild.textContent.trim() !== ''过滤文字;

    var xmlDoc;

    var xhr = new XMLHttpRequest();
    xhr.open('GET', 'prueba.xml');
    xhr.send();
    xhr.onreadystatechange = function () {
        if (xhr.readyState === 4 && xhr.status === 200) {
            xmlDoc = xhr.responseXML;
            var items = xmlDoc.getElementsByTagName("*");
            let res = {};
            Array.from(items).forEach(node => {
                if (node.firstChild.nodeType === 3 && node.firstChild.textContent.trim() !== '') {
                    res[node.nodeName] = node.firstChild.textContent
                }
            });
            console.log(res);//{timestamp: "1510794812", nombre: "ayy"}
        }
    }