使用 Python 解析 XML - 命名空间
Parsing XML with Python - namespaces
我想使用开放数据,xml 存储在这里:
在这个论坛的帮助下我写了代码
from lxml import etree
from urllib.request import urlopen
root = etree.parse(urlopen(url)).getroot()
ns = { 'd': 'http://datex2.eu/schema/2/2_0' }
parking_area = root.xpath('//d:parkingAreaStatus', namespaces=ns)
parking_facility = root.xpath('//d:parkingFacilityStatus', namespaces=ns)
for pa in parking_area:
area_ref = pa.find('d:parkingAreaReference', ns)
ParkingspaceList.append(str((area_ref.get('id'))))
for pf in parking_facility:
facility_ref = pf.find('d:parkingFacilityReference', ns)
ParkingspaceList.append(str((facility_ref.get('id'))))
这似乎适用于 "pa" 但对于 "pf" 我收到一条失败消息:
ParkingspaceList.append(str((facility_ref.get('id'))))
AttributeError: 'NoneType' 对象没有属性 'get'
有什么建议吗?
此致
TR
同名的parkingFacilityStatus
元素中有parkingFacilityStatus
个元素,比较混乱:
<parkingFacilityStatus>
…
<parkingFacilityReference targetClass="ParkingFacility" id="24278[Karstadt]" version="1.0"/>
<parkingFacilityStatus>closed</parkingFacilityStatus>
…
</parkingFacilityStatus>
这是
<parkingFacilityStatus>closed</parkingFacilityStatus>
给出错误,因为该元素没有 parkingFacilityReference
子元素。
使用
for pf in parking_facility:
facility_ref = pf.find('d:parkingFacilityReference', ns)
if facility_ref is not None:
ParkingspaceList.append(str((facility_ref.get('id'))))
而且有效。
我想使用开放数据,xml 存储在这里:
在这个论坛的帮助下我写了代码
from lxml import etree
from urllib.request import urlopen
root = etree.parse(urlopen(url)).getroot()
ns = { 'd': 'http://datex2.eu/schema/2/2_0' }
parking_area = root.xpath('//d:parkingAreaStatus', namespaces=ns)
parking_facility = root.xpath('//d:parkingFacilityStatus', namespaces=ns)
for pa in parking_area:
area_ref = pa.find('d:parkingAreaReference', ns)
ParkingspaceList.append(str((area_ref.get('id'))))
for pf in parking_facility:
facility_ref = pf.find('d:parkingFacilityReference', ns)
ParkingspaceList.append(str((facility_ref.get('id'))))
这似乎适用于 "pa" 但对于 "pf" 我收到一条失败消息:
ParkingspaceList.append(str((facility_ref.get('id')))) AttributeError: 'NoneType' 对象没有属性 'get'
有什么建议吗?
此致
TR
同名的parkingFacilityStatus
元素中有parkingFacilityStatus
个元素,比较混乱:
<parkingFacilityStatus>
…
<parkingFacilityReference targetClass="ParkingFacility" id="24278[Karstadt]" version="1.0"/>
<parkingFacilityStatus>closed</parkingFacilityStatus>
…
</parkingFacilityStatus>
这是
<parkingFacilityStatus>closed</parkingFacilityStatus>
给出错误,因为该元素没有 parkingFacilityReference
子元素。
使用
for pf in parking_facility:
facility_ref = pf.find('d:parkingFacilityReference', ns)
if facility_ref is not None:
ParkingspaceList.append(str((facility_ref.get('id'))))
而且有效。