简体   繁体   English

使用 minidom 解析 XML

[英]Parsing XML Using minidom

I have an XML file in which I want to extract data from certain tags that are ONLY nested within other tags, ie the tags containing the data I want to extract occur elsewhere in the XML document.我有一个 XML 文件,我想从仅嵌套在其他标签中的某些标签中提取数据,即包含我要提取的数据的标签出现在 XML 文档的其他地方。

Sample 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 code (which retrieves all data, including from the tags I don't want): 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

How do I modify the loop to access only the data in the tags nested in the item tags only?如何修改循环以仅访问嵌套在项目标签中的标签中的数据?

You can always call getElementsByTagName() on any subnode:您始终可以在任何子节点上调用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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM