简体   繁体   English

使用Beautiful Soup查找XML中的所有属性

[英]Find all attributes in an XML using Beautiful Soup

I have an XML file which looks something like this: 我有一个看起来像这样的XML文件:

<tagA key1="val1" key2="val2" key3="val3">
<tagB.1 key1="val1" key2="val2" key3="val3"/>
<tagB.2 key1="val1" key2="val2" key3="val3"/>
<tagB.3 key1="val1" key2="val2" key3="val3"/>
<tagB.4 key1="val1" key2="val2" key3="val3"/>
<tagB.5 key1="val1" key2="val2" key3="val3"/>
</tagA>

What I am trying to do is extract the name of key1 , key2 and key3 in tagB.x , and put them into a list. 我想要做的是在tagB.x提取key1key2key3tagB.x ,并将它们放入列表中。 This way I can extract the values of it later. 这样我以后可以提取它的值。 It should be able to handle more or less elements, being as each file is different. 它应该能够处理更多或更少的元素,因为每个文件都不同。 Thanks! 谢谢!

You should use an xml parser: 您应该使用xml解析器:

xml="""
<tagA key1="val1" key2="val2" key3="val3">
<tagB.1 key1="val1" key2="val2" key3="val3"/>
<tagB.2 key1="val1" key2="val2" key3="val3"/>
<tagB.3 key1="val1" key2="val2" key3="val3"/>
<tagB.4 key1="val1" key2="val2" key3="val3"/>
<tagB.5 key1="val1" key2="val2" key3="val3"/>
</tagA>
"""


import xml.etree.ElementTree as ET

root = ET.fromstring(xml)
for child in root:
    print child.tag, child.attrib.keys()

tagB.1 ['key3', 'key2', 'key1']
tagB.2 ['key3', 'key2', 'key1']
tagB.3 ['key3', 'key2', 'key1']
tagB.4 ['key3', 'key2', 'key1']
tagB.5 ['key3', 'key2', 'key1']

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

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