使用minidom解析XML

1 投票
1 回答
906 浏览
提问于 2025-04-16 21:20

我有一个XML文件,我想从某些标签中提取数据,这些标签只能在其他标签里面,也就是说,我想提取的数据标签在XML文档的其他地方。

示例XML:

<root>
    <tag1>content I don't want</tag1>
    <tag2>content I don't want</tag2>
    <tag3>content I don't want</tag3>
    <item>
        <tag1>content I want</tag1>
        <tag2>content I want</tag2>
        <tag3>content I want</tag3>
    </item>
    <item>
        <tag1>content I want</tag1>
        <tag2>content I want</tag2>
        <tag3>content I want</tag3>
    </item>
</root>

这是Python代码(它会获取所有数据,包括我不想要的标签的数据):

for counter in range(2):
    variable0 = XML_Document.getElementsByTagName('item')[counter]
    variable1 = XML_Document.getElementsByTagName('tag1')[counter].toxml(encoding="utf-8")
    variable2 = XML_Document.getElementsByTagName('tag2')[counter].toxml(encoding="utf-8")
    variable3 = XML_Document.getElementsByTagName('tag3')[counter].toxml(encoding="utf-8")
    print counter
    print variable1
    print variable2
    print variable3

我该如何修改这个循环,只访问那些嵌套在item标签中的数据呢?

1 个回答

1

你可以在任何子节点上使用 getElementsByTagName() 这个方法。

for item in XML_Document.getElementsByTagName('item'):
    tag1 = item.getElementsByTagName('tag1')[0].toxml(encoding="utf-8")
    tag2 = item.getElementsByTagName('tag2')[0].toxml(encoding="utf-8")
    tag3 = item.getElementsByTagName('tag3')[0].toxml(encoding="utf-8")
    print tag1, tag2, tag3

撰写回答