python - 如何将 XML 的值放在列表中?
问题描述
我有一个如下所示的 XML 文件,我正在尝试获取包含简单列表中的值的所有“标题”。
xml1 = '''
<Record>
<RecordID>London01</RecordID>
<Location>London</Location>
<Date>07-09-2020</Date>
<Time>08u53m45s</Time>
<Version>2.0.1</Version>
<Version_2>v1.9</Version_2>
<Max_30e>
<I_25Hz_1s>56.40</I_25Hz_1s>
<I_25Hz_2s>7.44</I_25Hz_2s>
</Max_30e>
<Max_50e>
<I_75Hz_1s>1.56</I_75Hz_1s>
<I_75Hz_2s>0.36</I_75Hz_2s>
</Max_50e>
<Sample>
<Vehicleid>5664</Vehicleid>
<NumberY>2742</NumberY>
<NumberX>SNG</NumberX>
<NumberZ>NSR</NumberZ>
</Sample>
<Sample>
<Vehicleid>1664</Vehicleid>
<NumberY>4201</NumberY>
<NumberX>ICM</NumberX>
<NumberZ>NSR</NumberZ>
</Sample>
</Record>'''
这是我尝试过的:
root = ET.fromstring(xml1)
values = []
for child in root:
values.append(child.tag)
for child1 in child:
values.append(child1.tag)
print(values)
这是我当前的输出:
['RecordID', 'Location', 'Date', 'Time', 'Version',
'Version_2', 'Max_30e', 'I_25Hz_1s', 'I_25Hz_2s', 'Max_50e',
'I_75Hz_1s', 'I_75Hz_2s', 'Sample', 'Vehicleid', 'NumberY',
'NumberX', 'NumberZ', 'Sample', 'Vehicleid', 'NumberY',
'NumberX', 'NumberZ']
这是我想要的输出:
['RecordID', 'Location', 'Date', 'Time', 'Version',
'Version_2', 'I_25Hz_1s', 'I_25Hz_2s', 'I_75Hz_1s', 'I_75Hz_2s',
'Vehicleid', 'NumberY', 'NumberX', 'NumberZ', 'Vehicleid',
'NumberY', 'NumberX', 'NumberZ']
解决方案
你可以使用一个标志
for child in root:
has_child=False
for child1 in child:
has_child=True
values.append(child1.tag)
if not has_child:
values.append(child.tag)
推荐阅读
- vue.js - Vue材料日期选择器清除日期后更改格式
- c - calloc vs memset 一个显示结果,一个没有
- python - 如何将模块用作包的一部分并用作可直接执行的脚本?
- for-loop - 如何在实际结果之前阻止回收器视图重复循环项目?
- generics - 具有泛型参数类型的函数
- java - java.lang.UnsatisfiedLinkError:java.library.path 中没有 netty_transport_native_epoll_x86_64
- reporting-services - 在 HANA 计算视图中使用 IN 运算符,在 SSRS 报告中使用
- ios - 为什么在 xamarin 表单中进行写入操作后,我会在 iOS 中获得 BLE 配对请求对话框?
- ruby - 删除 ruby 字符串中的“\”字符
- javascript - 在 React 中将 D3 快速排序示例转换为 D3 版本 6