Javascript中的XML文件,getElementByAttribute
假设我有这样一个XML文件:Javascript中的XML文件,getElementByAttribute,javascript,xml,getelementsbytagname,Javascript,Xml,Getelementsbytagname,假设我有这样一个XML文件: <?xml version="1.0" encoding="ISO-8859-1"?> <MIDIFile> <Event> <Absolute>0</Absolute> <NoteOn Channel="1" Note="40" Velocity="64"/> </Event> <Event> <Absolute>236
<?xml version="1.0" encoding="ISO-8859-1"?>
<MIDIFile>
<Event>
<Absolute>0</Absolute>
<NoteOn Channel="1" Note="40" Velocity="64"/>
</Event>
<Event>
<Absolute>236</Absolute>
<NoteOff Channel="1" Note="40" Velocity="0"/>
</Event>
</MIDIFile>
xmlhttp=new XMLHttpRequest();
xmlhttp.open("GET","test.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
// make an array with all the events from the xml file
var events = xmlDoc.getElementsByTagName("Event")
for (var i = 0; i<events.length; i++)
console.log(events[i].getElementsByTagName("Absolute")[0].childNodes[0].nodeValue)
现在,我该如何访问“NoteOn”属性并获取其值?我希望遍历XML中的所有事件,查看它们是否包含NoteOn或NoteOff,并加载一个包含所有注释、持续时间、速度和通道的数组
请帮帮我<代码>getElementsByTagName(“NoteOn”)就是不起作用。。。如果有帮助的话,下面是一些截图,显示了如果Iconsole.log(xmlDoc)
提前多谢
根据答案进行编辑。当我尝试这样做时:
var noteon = xmlDoc.getElementsByTagName('noteon');
console.log(noteon)
结果就是这个
[]
重新编辑:
如果我写的是“NoteOn”而不是“NoteOn”,那就行了 你会使用jQuery吗?你想提取
NoteOn
的值是多少?他不需要jQuery,只需要4行或更少的代码就可以得到属性。正如我在下面发布的。你能使用jQuery吗?你想提取NoteOn
的值是多少?他不需要jQuery,只需要4行或更少的代码就可以得到属性。正如我在下面发布的一样。他可能希望所有的Noteon或Noteoff都出现在事件中,而不是来自XML文档。这不起作用,请参见编辑后的答案。无论如何,非常感谢你的帮助!酷!如果我写的是“NoteOn”而不是“NoteOn”,它就行了。谢谢!如果我试图访问事件内部的NoteOn,但它不存在(因为有NoteOff而没有NoteOn),该怎么办?它抛出错误并停止整个脚本:(我想我会写一个新问题…@mistapink你是什么意思?Noteon和noteoff是xml文档的节点。他可能希望事件中的所有Noteon或noteoff,而不是xml文档中的所有Noteon或noteoff。它不起作用,请参阅编辑后的答案。非常感谢你的帮助!酷!如果我写“Noteon”,它会起作用而不是“noteon”。非常感谢!如果我尝试访问事件内部的noteon,但它不存在(因为有NoteOff和noteon)?它会出错并停止整个脚本:(我想我会写一个新问题…@mistapink你是什么意思?noteon和NoteOff是xml文档的节点。
[]
var noteon = xmlDoc.getElementsByTagName('noteon');
var note = new Array;
for(var i = 0; i < noteon.length; i++){
note[i] = noteon[i].getAttribute('Note'); // or any of the attributes you want to get
}
var noteon = xmlDoc.getElementsByTagName('noteon');
var noteoff = xmlDoc.getElementsByTagName('noteoff');
var note = new Array;
if(noteon != []){
for(var i = 0; i < noteon.length; i++){
note[i] = noteon[i].getAttribute('Note'); // or any of the attributes you want to get
} else if(noteoff != []){
for(var i = 0; i < noteoff.length; i++){
note[i] = noteoff[i].getAttribute('Note'); // or any of the attributes you want to get
} else{
return; //makes sure the function returns to the call even if nothing was found
}
}