python - XML解析Python

标签 python xml xml-parsing

<dict>
<key>1208</key>
        <dict>
            <key>Track ID</key><integer>1208</integer>
            <key>Name</key><string>Kings And Queens</string>
            <key>Artist</key><string>30 Seconds To Mars</string>
            <key>Album Artist</key><string>30 Seconds to Mars</string>
            <key>Composer</key><string>Jared Leto</string>
            <key>Album</key><string>This Is War</string>
            <key>Genre</key><string>Pop</string>
            <key>Kind</key><string>MPEG audio file</string>
            <key>Size</key><integer>10634388</integer>
            <key>Total Time</key><integer>347820</integer>
            <key>Track Number</key><integer>1</integer>
            <key>Year</key><integer>2009</integer>
            <key>Date Modified</key><date>2011-09-05T21:03:08Z</date>
            <key>Date Added</key><date>2011-08-18T03:57:19Z</date>
            <key>Bit Rate</key><integer>244</integer>
            <key>Sample Rate</key><integer>44100</integer>
            <key>Comments</key><string> 00000000 00000210 000006F0 0000000000EA0000 00000000 00A22291 00000000 00000000 00000000 00000000 00000000 00000000</string>
            <key>Play Count</key><integer>1</integer>

        <key>Play Date</key><integer>3399116673</integer>
            <key>Play Date UTC</key><date>2011-09-17T09:34:33Z</date>
            <key>Persistent ID</key><string>BB3D5E86F5CAC255</string>
            <key>Track Type</key><string>File</string>
            <key>Location</key><string>file://localhost/D:/My%20Music/English%20songs/01-30_seconds_to_mars-kings_and_queens.mp3</string>
            <key>File Folder Count</key><integer>-1</integer>
            <key>Library Folder Count</key><integer>-1</integer>
        </dict>

...

..

我想使用 xml.dom.minidom 包来解析这个文件。

self.dom = xml.dom.minidom.parse(self.file)
self.name = self.dom.getElementsByTagName('dict')
print self.name[10].firstChild.data

这段代码似乎不起作用。基本上我想要的是检查 dict 的第二个子项的值,然后如果它是我想要的轨道,则获取轨道的位置。

有没有办法获取满足我条件的dict节点?

最佳答案

怎么样:

import xml.dom.minidom as minidom
dom = minidom.parse('test.xml')
data={}
for dct in dom.getElementsByTagName('dict'):
    keys=dct.getElementsByTagName('key')
    # key.nextSibling can be an integer or string or date element, or Text node
    # key.nextSibling.firstChild is a Text node or None
    vals=[key.nextSibling.firstChild for key in keys]
    # drill down to the text inside the keys and vals
    keys=[key.firstChild.data for key in keys]
    vals=[val.data if val else None for val in vals]
    data=dict(zip(keys,vals))
    if data['Track ID']=='1208':
        print(data['Location'])
        break

产生

file://localhost/D:/My%20Music/English%20songs/01-30_seconds_to_mars-kings_and_queens.mp3

关于python - XML解析Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7459970/

相关文章:

python - 如何访问 scrapy 上传到 S3 的图像名称?

python - 具有重复索引的 ix 选择行为不一致

python - 是否有可以对有限状态机进行时间逻辑模型检查的 Python 包?

java - 将 s 命名为 :element and s:complexType the same name

java - 使用leve包从xsd文件生成java类

java - 如何在 Java 中从 XML 生成状态流程图?

python - 如何在同一个 pandas 数据框的同一列的一个绘图图表中绘制多条线?

android - SchemaFactory 不支持平台级别 8 中的 W3C XML Schema?

html - SSRS 中 HTML 的 Spacebefore 和 Spaceafter

xml - 使用 Coldfusion 解析复杂的 XML 文件