迭代地浏览XML文件,存储来自不同标签的值集

时间:2013-11-17 21:53:42

标签: python xml

我是将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,我就会使用数字代替音乐术语。感谢您的任何帮助,非常感谢。

1 个答案:

答案 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