Chr*_*ung 3 python xml elementtree findall
所以我试图解析一些开放数据来构建数据库。\n这就是我所做的:
\n\n# -*- coding: utf-8 -*-\nimport urllib\nimport xml.etree.ElementTree as ET\n\nurl = \'http://opendata.cwb.gov.tw/govdownload?dataid=C-A0008-001&authorizationkey=rdec-key-123-45678-011121314\'\n\nroot = ET.parse(urllib.urlopen(url)).getroot()\n\nlocations = root.findall(\'dataset/location\')\nprint type(locations)\nprint "Counts:", len(locations)\nRun Code Online (Sandbox Code Playgroud)\n\n它返回:
\n\nCounts: 0\nRun Code Online (Sandbox Code Playgroud)\n\n我尝试解析其他一些 xml 数据(更改 url),效果很好
\n\n我正在处理的 xml 数据大致如下:
\n\n<?xml version="1.0" encoding="UTF-8"?><cwbopendata xmlns="urn:cwb:gov:tw:cwbcommon:0.1">\n<identifier>0f819d32-297a-4512-9654-990a565bd080</identifier>\n<sender>weather@cwb.gov.tw</sender>\n<sent>2016-05-23T16:07:06+08:00</sent>\n<status>Actual</status>\n<msgType>Issue</msgType>\n<dataid>CWB_A0008</dataid>\n<scope>Public</scope>\n<dataset>\n <location>\n <stationId>72C44</stationId>\n <time>\n <dataTime>105 4_2</dataTime>\n </time>\n <weatherElement>\n <elementName>\xe5\xb9\xb3\xe5\x9d\x87\xe6\xb0\xa3\xe6\xba\xab</elementName>\n <elementValue>\n <value>21.1</value>\n </elementValue>\n .\n .\n .\n </location>\n <location>\n .\n . \n .\nRun Code Online (Sandbox Code Playgroud)\n\n抱歉,我是 python 和 ElementTree 的新手,希望得到一些好的建议,谢谢
\nhar*_*r07 11
您的 XML 具有默认命名空间,其 URI 为“urn:cwb:gov:tw:cwbcommon:0.1”。因此,在声明了默认命名空间的元素内,所有没有前缀的元素都将被考虑在该命名空间中:
>>> ns = {'d': 'urn:cwb:gov:tw:cwbcommon:0.1'}
>>> locations = root.findall('d:dataset/d:location', ns)
>>> print "Counts:", len(locations)
Counts: 17
Run Code Online (Sandbox Code Playgroud)
相关:通过“ElementTree”在 Python 中解析带有名称空间的 XML