這篇文章的所有內容都是重復的。盡管我讀過十幾篇文章,但我還是無法弄清楚。
這是 XML(簡短版本):
<?xml version="1.0" encoding="iso-8859-1" standalone="yes" ?>
<coordinates xmlns="http://www.egi.com/coordinates_mff" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<sensorLayout>
<name>HydroCel GSN 256 1.0</name>
<sensors>
<sensor>
<name></name>
<number>1</number>
<type>0</type>
<x>6.962</x>
<y>5.382</y>
<z>-2.191</z>
</sensor>
<sensor>
<name></name>
<number>2</number>
<type>0</type>
<x>6.484</x>
<y>6.404</y>
<z>-0.140</z>
</sensor>
<sensor>
<name></name>
<number>3</number>
<type>0</type>
<x>5.699</x>
<y>7.208</y>
<z>1.791</z>
</sensor>
</sensors>
</sensorLayout>
<acqTime>2006-04-28T15:32:00.000000-08:00</acqTime>
<acqMethod>An Average of Many Data Sets				</acqMethod>
<defaultSubject>true</defaultSubject>
</coordinates>
如何檢索包含每個傳感器的名稱、編號和坐標的傳感器串列?
我正在努力迭代這棵樹:
tree = ET.parse(xml_fname)
root = tree.getroot()
# And then what?
# root.iter("sensor") does not yield any element
# root.find("sensor") returns None
# and so on...
根的標簽對我來說看起來很奇怪..
root.tag
'{http://www.egi.com/coordinates_mff}coordinates'
謝謝您的幫助!
uj5u.com熱心網友回復:
您可以使用命名空間支持對其進行決議。見下文。
from xml.etree import ElementTree as ET
root = ET.parse(xml_fname)
# Use an XPath to get all sensor tags
sensors = root.findall(".//sensorLayout/sensors/sensor", namespaces={"": "http://www.egi.com/coordinates_mff"})
# Burst values from each child of every sensor
sensor_values = [{ct.tag.split("}")[-1]: ct.text for ct in sensor.getchildren()} for sensor in sensors]
# Dict key is formed by removing the namspace part in the tag - dirty!
print(sensor_values)
你會得到類似的東西
[
{'name': None, 'number': '1', 'type': '0', 'x': '6.962', 'y': '5.382', 'z': '-2.191'},
{'name': None, 'number': '2', 'type': '0', 'x': '6.484', 'y': '6.404', 'z': '-0.140'},
{'name': None, 'number': '3', 'type': '0', 'x': '5.699', 'y': '7.208', 'z': '1.791'}
]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/495200.html
標籤:Python python-3.x xml 解析
上一篇:根據另一個值更改繪圖中點的大小
