使用 ElementTree 访问 xml 文件中的元素和标签
Access element and tag in xml file using ElementTree
非常感谢您的阅读。对于这样一个初学者问题,我深表歉意,因为我确信这是一个简单的答案。非常感谢任何指导。
我有一个 xml 文件,我正在使用 ElementTree
对其进行解析,其中包含如下所示的元素:
data.xml:
<?xml version="1.0" encoding="utf-8"?><listings><listing id="26496000" dateFirstListed="2012-10-13" dateLastListed="2013-10-06" market="SALE" propertyType="DETACHED" bedrooms="4" latestAskingPrice="314950"><address key="u935d·0" udprn="50812465" line1="12 Millcroft" line2="Millhouse Green" town="SHEFFIELD" postcode="S36 9AR" /><description> SOME TEXT HERE </description></listing>
我想访问 <description>
标签和 <address key>
。
使用 https://docs.python.org/2/library/xml.etree.elementtree.html 中的指南,我写:
import xml.etree.ElementTree
data = xml.etree.ElementTree.parse('data.xml')
root = data.getroot()
并遍历子元素:
for child in root:
print child.tag, child.attrib
>
listing {'dateLastListed': '2013-10-06', 'dateFirstListed': '2012-10-13', 'propertyType': 'DETACHED', 'latestAskingPrice': '314950', 'bedrooms': '4', 'id': '26496000', 'market': 'SALE'}
这只为我提供了 <listing>
标签的子元素。如何更改上述表达式以访问 <address key>
和 <description>
?
编辑:遵循这个问题的指导
我试过写:
for i in root.findall("listing"):
description = i.find('description')
print description.text
>
AttributeError: 'NoneType' object has no attribute 'text'
您可以逐一遍历列表,然后获取内部 description
和 address
子元素。要访问属性,请使用 .attrib
attribute:
import xml.etree.ElementTree as ET
data = ET.parse('data.xml')
root = data.getroot()
for listing in root.findall("listing"):
address = listing.find('address')
description = listing.findtext('description')
print(description, address.attrib.get("key"))
非常感谢您的阅读。对于这样一个初学者问题,我深表歉意,因为我确信这是一个简单的答案。非常感谢任何指导。
我有一个 xml 文件,我正在使用 ElementTree
对其进行解析,其中包含如下所示的元素:
data.xml:
<?xml version="1.0" encoding="utf-8"?><listings><listing id="26496000" dateFirstListed="2012-10-13" dateLastListed="2013-10-06" market="SALE" propertyType="DETACHED" bedrooms="4" latestAskingPrice="314950"><address key="u935d·0" udprn="50812465" line1="12 Millcroft" line2="Millhouse Green" town="SHEFFIELD" postcode="S36 9AR" /><description> SOME TEXT HERE </description></listing>
我想访问 <description>
标签和 <address key>
。
使用 https://docs.python.org/2/library/xml.etree.elementtree.html 中的指南,我写:
import xml.etree.ElementTree
data = xml.etree.ElementTree.parse('data.xml')
root = data.getroot()
并遍历子元素:
for child in root:
print child.tag, child.attrib
>
listing {'dateLastListed': '2013-10-06', 'dateFirstListed': '2012-10-13', 'propertyType': 'DETACHED', 'latestAskingPrice': '314950', 'bedrooms': '4', 'id': '26496000', 'market': 'SALE'}
这只为我提供了 <listing>
标签的子元素。如何更改上述表达式以访问 <address key>
和 <description>
?
编辑:遵循这个问题的指导
我试过写:
for i in root.findall("listing"):
description = i.find('description')
print description.text
>
AttributeError: 'NoneType' object has no attribute 'text'
您可以逐一遍历列表,然后获取内部 description
和 address
子元素。要访问属性,请使用 .attrib
attribute:
import xml.etree.ElementTree as ET
data = ET.parse('data.xml')
root = data.getroot()
for listing in root.findall("listing"):
address = listing.find('address')
description = listing.findtext('description')
print(description, address.attrib.get("key"))