Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript中的XML文件,getElementByAttribute_Javascript_Xml_Getelementsbytagname - Fatal编程技术网

Javascript中的XML文件,getElementByAttribute

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文件:

<?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”)就是不起作用。。。如果有帮助的话,下面是一些截图,显示了如果I
console.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
}
}