嘗試使用Python中的lxml解析XML文件,我該如何簡單地獲取元素屬性的值?例如:使用lxml獲取第一個元素的屬性
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<item id="123">
<sub>ABC</sub>
</item>
我想得到結果123,並將其作爲變量存儲。
嘗試使用Python中的lxml解析XML文件,我該如何簡單地獲取元素屬性的值?例如:使用lxml獲取第一個元素的屬性
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<item id="123">
<sub>ABC</sub>
</item>
我想得到結果123,並將其作爲變量存儲。
使用etree.parse()
時,只需調用.getroot()
即可獲取根元素;該.attrib
屬性是所有屬性的字典,用它來獲得的價值:
>>> from lxml import etree
>>> tree = etree.parse('test.xml')
>>> tree.getroot().attrib['id']
'123'
如果使用etree.fromstring()
返回的對象是根對象了,所以不需要.getroot()
電話:
>>> tree = etree.fromstring('''\
... <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
... <item id="123">
... <sub>ABC</sub>
... </item>
... ''')
>>> tree.attrib['id']
'123'
或者,您可以使用XPath選擇:
>>> from lxml import etree
>>> tree = etree.fromstring(b'''<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<item id="123">
<sub>ABC</sub>
</item>''')
>>> tree.xpath('/item/@id')
['123']
我覺得馬亭已經回答了你的問題。基於他的回答,您還可以使用items()
方法來獲取具有屬性和值的元組列表。如果您需要多個屬性的值,這可能很有用。像這樣:
>>> from lxml import etree
>>> tree = etree.parse('test.xml')
>>> item = tree.xpath('/item')
>>> item.items()
[('id', '123')]
或者字符串的情況下:
>>> tree = etree.fromstring("""\
... <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
... <item id="123">
... <sub>ABC</sub>
... </item>
... """)
>>> tree.items()
[('id', '123')]