使用元素的属性从xml文件填充列表

时间:2018-04-04 18:18:45

标签: javascript

您好,

我有一个看起来像这样的xml文件

<?xml version="1.0"?>
<sendSound enable="true" autoPlay="true">
    <item name="Gasp for surprise" src="flashsound/gasp.mp3"></item>
    <item name="Giggle" src="flashsound/hehe.mp3"></item>
    <item name="Say hello" src="flashsound/hello.mp3"></item>
</sendSound>

我想让每个项目都名为NAMES所以它会像这样:

Gasp for surprise
Giggle
Say hello

这是我的代码

var request = new XMLHttpRequest();
request.open("GET", "demo.xml", false);
request.send();
var xml = request.responseXML;
var users = xml.getElementsByTagName("sendSound");
for(var i = 0; i < users.length; i++) {
    var user = users[i];
    var names = user.getElementsByTagName("item");
    for(var j = 0; j < names.length; j++) {
        alert(names[j].childNodes[0].getAttribute("name"));
    }
}

但我甚至没有得到警报。有什么问题?

谢谢。

1 个答案:

答案 0 :(得分:1)

使用DOMParser()parser.parseFromString()解析并松散.childNodes[0]

(将myXml替换为request.responseXML

var myXml = `<?xml version="1.0"?>
    <sendSound enable="true" autoPlay="true">
        <item name="Gasp for surprise" src="flashsound/gasp.mp3"></item>
        <item name="Giggle" src="flashsound/hehe.mp3"></item>
        <item name="Say hello" src="flashsound/hello.mp3"></item>
    </sendSound>`;
    
    parser = new DOMParser();
    var xml =  parser.parseFromString(myXml,"text/xml");
    
    
    var users = xml.getElementsByTagName("sendSound");
    for(var i = 0; i < users.length; i++) {
        var user = users[i];
        var names = user.getElementsByTagName("item");
        for(var j = 0; j < names.length; j++) {
            console.log(names[j].getAttribute("name"));
        }
    }