这是我使用的XML文件:打印XML字段作为字典
<fields>
<input_layer name = "Pocket_Substation"/>
<output_layer name = "sub_substation"/>
<field_mapping>
<field input_name = "dat" output_name="date" />
<field input_name = "Type" output_name="type"/>
<field input_name = "Class" output_name="class"/>
<field input_name = "Land" output_name="land"/>
<field input_name = "status" output_name="status"/>
<field input_name = "descrp" output_name="description"/>
<field input_name = "Loc" output_name="location"/>
<field input_name = "voltage" output_name="voltage"/>
<field input_name = "name" output_name="owner_name"/>
<field input_name = "Remarks" output_name="remarks"/>
</field_mapping>
</fields>
我需要在字典格式的字段值(output_name中:input_name)。下面是我的代码打印的字典,而是程序返回
unhashable type: 'list' error.
下面是代码:
import xml.etree.ElementTree as ET
def read_field(xml_node, name):
return [child.get(name) for child in xml_node.iter('field')]
def read_map(xml_node):
fields = dict()
for child in xml_node:
if child.tag == 'field_mapping':
fields = {field_name : read_field(child, field_name) for field_name
in ['input_name','output_name']}
return{
fields['input_name']:fields['output_name']
}
tree = ET.parse('substation.xml')
root = tree.getroot()
print(read_map(root))
是的,它的工作。谢谢@David Scarlett –