簡體   English   中英

如何將 XML 的值放在列表中?

[英]How to place the values of an XML in a list?

我有一個如下所示的 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)

如果你只是深入兩層,那么這應該沒問題。 更深入需要遞歸。 您看到它們附加到您的值的原因是因為標題文本字段中有一個空格。

values = []
for child in root:
    if child.text.strip():
        values.append(child.tag)
    # Check for children
    for grandChild in child:
        if grandChild.text.strip():
            values.append(grandChild.tag)

print (values)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM