繁体   English   中英

将 XML 数据解析为 python 中的二维数组

[英]Parse XML data to 2D array in python

我对 python 还很陌生,我刚刚了解 XML 文件和 2D arrays。 我正在尝试从 xml 文件中获取数据并将其导入 python 中的二维字符串数组。 我从表中创建了以下 xml 文件:

<members>

    <member>
        <FirstName>Jarrod</FirstName>
        <LastName>Weiss</LastName>
        <DOB>12-08-1991</DOB>
        <DateJoined>4-05-2017</DateJoined>
        <Paid>TRUE</Paid>
    </member>

    <member>
        <FirstName>John</FirstName>
        <LastName>Smith</LastName>
        <DOB>22-09-1980</DOB>
        <DateJoined>1-03-2016</DateJoined>
        <Paid>TRUE</Paid>
    </member>

</members>

我一直在尝试使用 Elementree,但没有运气。 这将访问 xml 文件中的最后一个条目,但不会访问其他条目。

import xml.etree.ElementTree as ET
mytree = ET.parse('members.xml')
myroot = mytree.getroot()
for x in myroot.findall('member'):
    FirstName = x.find('FirstName').text
    LastName = x.find('LastName').text
    DOB = x.find('DOB').text
    DateJoined = x.find('DateJoined').text
    Paid = x.find('Paid').text
  

有任何想法吗?

import xml.etree.ElementTree as ET
mytree = ET.parse('members.xml')   # to parse file

print(mytree.tag)   # to get root tag
children = list(mytree)  # to get children element

这是一个简单的 for 循环,用于打印内容、构造二维数组和字典列表(这是我的首选):

import xml.etree.ElementTree as ET
mytree = ET.parse('members.xml')   # to parse file

print(mytree.tag)   # to get root tag
children = list(mytree)  # to get children element

arr = []                                 # 2D array
dic = []                                 # list of dict
for e in list(mytree):
    print(e.tag)                         # prints "member"
    ch = list(e)                         # get its children
    element = []
    elementdict = {}
    for ee in ch:
        print("\t", ee.tag, ":", ee.text) 
        element.append(ee.text)          # add text to arr[i]
        elementdict[ee.tag] = ee.text    # add text to dictionnary
    arr.append(element)        
    dic.append(elementdict)

print(arr)                ## print 2D array
print(dic)                ## print list of dictionaries

Output:

member
     FirstName : Jarrod
     LastName : Weiss
     DOB : 12-08-1991
     DateJoined : 4-05-2017
     Paid : TRUE
member
     FirstName : John
     LastName : Smith
     DOB : 22-09-1980
     DateJoined : 1-03-2016
     Paid : TRUE

## print(arr)
[['Jarrod', 'Weiss', '12-08-1991', '4-05-2017', 'TRUE'], ['John', 'Smith', '22-09-1980', '1-03-2016', 'TRUE']]

## print(dic)
[{'FirstName': 'Jarrod', 'LastName': 'Weiss', 'DOB': '12-08-1991', 'DateJoined': '4-05-2017', 'Paid': 'TRUE'}, {'FirstName': 'John', 'LastName': 'Smith', 'DOB': '22-09-1980', 'DateJoined': '1-03-2016', 'Paid': 'TRUE'}]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM