次のような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>
いくつかの素晴らしいチュートリアルのおかげで、JavaScriptでこれらの値を取得する方法がわかりました。
たとえば、すべての「Events」タグを反復処理して、次のように「Absolute」値を取得できます。
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)
これは戻ります
0
236
では、どうすれば「NoteOn」属性にアクセスしてその値を取得できますか?XML内のすべてのイベントを反復処理し、それらにNoteOnまたはNoteOffが含まれているかどうかを確認し、すべてのノート、それらのデュレーション、ベロシティ、およびチャネルを含む配列をロードします。
私を助けてください!getElementsByTagName("NoteOn")
うまくいかない...それが役立つかもしれない場合、これは私がした場合に何が起こるかのスクリーンショットですconsole.log(xmlDoc)
よろしくお願いします!
回答に応じて編集します。私がこれをやろうとすると:
var noteon = xmlDoc.getElementsByTagName('noteon');
console.log(noteon)
結果はこれだけです
[]
再編集:「noteon」の代わりに「NoteOn」と書くと機能します!