我是将XML解析为Python的新手,我正在寻找下一步的指导。有一件事我一直在使用Minidom而且我已经读过使用Element Tree要容易得多,但是无论如何我一直在尝试使用Minidom。
所以我有一个musicXML文件,我希望在Python中解析数据。我已经列出了我需要的所有标签,并将它们按照层次顺序放置,如下所示:
<Part id = "P1">
<measure id = "0">
<note>
<pitch>
<step> G <\step>
<octave> 4 <\octave>
</pitch>
<duration> 2 </duration>
<type> quarter </type>
</note>
</measure>
<measure id = "1">
....
</measure>
...
</Part>`
对于缺乏格式化的道歉,我不确定如何正确地缩进它,花费的时间超过了我承认如何采用新线。标签步长和八度音程都在音高中包含的相同音量上,持续时间和类型与音高处于同一水平,包含在音符中。
无论如何回到我想做的事情,这只是一个部分的样子,还有更多的部分ID,但是对于这个问题的问题,让我们假设有两个。基本上我希望能够记录每个步骤及其八度音阶的组的值,以及它的持续时间和类型以及它来自哪个度量,当然还有这些组中每个组的顺序。
因此,我们可以测量(G,4,2,季度),(F,4,2,季度),(C,4,2季度),(D,4,2,季度)。是否可以存储所有这些并通过索引再次访问它们?请记住,在此示例中,4个部分中的每个部分都有15个度量值,这意味着存储60个单独度量中包含的各个值的索引值。
我理解这是一个措辞非常沉重的问题,我希望有人能真正了解我的谣言,如果我对任何事情一直模糊不清,请向我们索取更多信息。所有这些数据都将存储在数据库中,我只需要实际从xml中取出数据并将其格式化以存储的最佳方法,特别是因为音符值和时间值仍然需要被操作一旦我将它们全部用于Python,我就会使用数字代替音乐术语。感谢您的任何帮助,非常感谢。
答案 0 :(得分:0)
很容易,也许一个例子会说服你:
在Ubuntu OS上:
sudo apt-get install python2.6-dev libxml2-dev libxslt1-dev
pip install lxml
from lxml import objectify
root = objectify.fromstring(<your input string>)
print root.measure[1].attrib["id"]
有关详细信息,请参阅http://lxml.de/objectify.html