Python 如何将XML文件解析为列表?
我试图用Python将XML文件解析为列表。我已经在这个网站和其他网站上看到了一些解决方案,但无法让它们为我工作。我已经设法做到了,但是用了一种我觉得很愚蠢的费力的方式。看来应该有更简单的办法 我曾试图修改其他人的代码以满足我的需要,但这并不奏效,因为我并不总是确定我在读什么 这是XML文件:Python 如何将XML文件解析为列表?,python,xml,Python,Xml,我试图用Python将XML文件解析为列表。我已经在这个网站和其他网站上看到了一些解决方案,但无法让它们为我工作。我已经设法做到了,但是用了一种我觉得很愚蠢的费力的方式。看来应该有更简单的办法 我曾试图修改其他人的代码以满足我的需要,但这并不奏效,因为我并不总是确定我在读什么 这是XML文件: <?xml version="1.0"?> <configuration> <location name ="location"> <la
<?xml version="1.0"?>
<configuration>
<location name ="location">
<latitude>54.637348</latitude>
<latHemi>N</latHemi>
<longitude>5.829723</longitude>
<longHemi>W</longHemi>
</location>
<microphone name="microphone">
<sensitivity>-26.00</sensitivity>
</microphone>
<weighting name="weighting">
<cWeight>68</cWeight>
<aWeight>2011</aWeight>
</weighting>
<optionalLevels name="optionalLevels">
<L95>95</L95>
<L90>90</L90>
<L50>50</L50>
<L10>10</L10>
<L05>05</L05>
<fmax>fmax</fmax>
</optionalLevels>
<averagingPeriod name="averagingPeriod">
<onemin>1</onemin>
<fivemin>5</fivemin>
<tenmin>10</tenmin>
<fifteenmin>15</fifteenmin>
<thirtymin>30</thirtymin>
</averagingPeriod>
<timeWeighting name="timeWeighting">
<fast>fast</fast>
<slow>slow</slow>
</timeWeighting>
<rebootTime name="rebootTime">
<midnight>midnight</midnight>
<sevenAm>7am</sevenAm>
<sevenPm>7pm</sevenPm>
<elevenPm>23pm</elevenPm>
</rebootTime>
<remoteUpload name="remoteUpload">
<nointernet>nointernet</nointernet>
<vodafone>vodafone</vodafone>
</remoteUpload>
</configuration>
你提出的问题不是很明确。XML结构首先与列表结构不太一致。如果您是python新手,我认为最好的方法是使用类似的方法将xml中的隐式模式解析为python数据结构 e、 g
导入xmltodict
xml=”“”
54.637348
N
5.829723
W
-26.00
68
2011
95
90
50
10
05
fmax
1.
5.
10
15
30
快速的
缓慢的
午夜
上午7点
晚上7点
晚上23点
网络
沃达丰
"""
d=xmltodict.parse(xml)
您提出的问题没有很好地定义。XML结构首先与列表结构不太一致。如果您是python新手,我认为最好的方法是使用类似的方法将xml中的隐式模式解析为python数据结构
e、 g
导入xmltodict
xml=”“”
54.637348
N
5.829723
W
-26.00
68
2011
95
90
50
10
05
fmax
1.
5.
10
15
30
快速的
缓慢的
午夜
上午7点
晚上7点
晚上23点
网络
沃达丰
"""
d=xmltodict.parse(xml)
谢谢您的评论。如果问题提出得不好,很抱歉。我自己也找到了答案。我希望将XML子元素解析为一个列表,以便以后在另一个程序中使用。我想出来了。谢谢您的耐心。谢谢您的评论。如果问题提出得不好,很抱歉。我自己也找到了答案。我希望将XML子元素解析为一个列表,以便以后在另一个程序中使用。我想出来了。谢谢您的耐心。欢迎来到StackOverflow。您能描述一下您希望从XML解析的预期输出吗?你可以问一下,你想要什么样的清单?顶级元素的单一平面列表?列表列表?欢迎来到StackOverflow。您能描述一下您希望从XML解析的预期输出吗?你可以问一下,你想要什么样的清单?顶级元素的单一平面列表?名单?
#!/usr/bin/python
import xml.etree.ElementTree as ET
import os
try:
import cElementTree as ET
except ImportError:
try:
import xml.etree.cElementTree as ET
except ImportError:
exit_err("Failed to import cElementTree from any known place")
file_name = ('/home/mark/Desktop/Practice/config_settings.xml')
full_file = os.path.abspath(os.path.join('data', file_name))
dom = ET.parse(full_file)
tree = ET.parse(full_file)
root = tree.getroot()
location_settings = dom.findall('location')
mic_settings = dom.findall('microphone')
weighting = dom.findall('weighting')
olevels = dom.findall('optionalLevels')
avg_period = dom.findall('averagingPeriod')
time_weight = dom.findall('timeWeighting')
reboot = dom.findall('rebootTime')
remote_upload = dom.findall('remoteUpload')
for i in location_settings:
latitude = i.find('latitude').text
latHemi = i.find('latHemi').text
longitude = i.find('longitude').text
longHemi = i.find('longHemi').text
for i in mic_settings:
sensitivity = i.find('sensitivity').text
for i in weighting:
cWeight = i.find('cWeight').text
aWeight = i.find('aWeight').text
for i in olevels:
L95 = i.find('L95').text
L90 = i.find('L90').text
L50 = i.find('L50').text
L10 = i.find('L10').text
L05 = i.find('L05').text
for i in avg_period:
onemin = i.find('onemin').text
fivemin = i.find('fivemin').text
tenmin = i.find('tenmin').text
fifteenmin = i.find('fifteenmin').text
thirtymin = i.find('thirtymin').text
for i in time_weight:
fast = i.find('fast').text
slow = i.find('slow').text
for i in reboot:
midnight = i.find('midnight').text
sevenAm = i.find('sevenAm').text
sevenPm = i.find('sevenPm').text
elevenPm= i.find('elevenPm').text
for i in remote_upload:
nointernet = i.find('nointernet').text
vodafone = i.find('vodafone').text
config_list = [latitude,latHemi,longitude,longHemi,sensitivity,aWeight,cWeight,
L95,L90,L50,L10,L05,onemin,fivemin,tenmin,fifteenmin,thirtymin,
fast,slow,midnight,sevenAm,sevenAm,elevenPm,nointernet,vodafone]
print(config_list)
import xmltodict
xml = """<?xml version="1.0"?>
<configuration>
<location name ="location">
<latitude>54.637348</latitude>
<latHemi>N</latHemi>
<longitude>5.829723</longitude>
<longHemi>W</longHemi>
</location>
<microphone name="microphone">
<sensitivity>-26.00</sensitivity>
</microphone>
<weighting name="weighting">
<cWeight>68</cWeight>
<aWeight>2011</aWeight>
</weighting>
<optionalLevels name="optionalLevels">
<L95>95</L95>
<L90>90</L90>
<L50>50</L50>
<L10>10</L10>
<L05>05</L05>
<fmax>fmax</fmax>
</optionalLevels>
<averagingPeriod name="averagingPeriod">
<onemin>1</onemin>
<fivemin>5</fivemin>
<tenmin>10</tenmin>
<fifteenmin>15</fifteenmin>
<thirtymin>30</thirtymin>
</averagingPeriod>
<timeWeighting name="timeWeighting">
<fast>fast</fast>
<slow>slow</slow>
</timeWeighting>
<rebootTime name="rebootTime">
<midnight>midnight</midnight>
<sevenAm>7am</sevenAm>
<sevenPm>7pm</sevenPm>
<elevenPm>23pm</elevenPm>
</rebootTime>
<remoteUpload name="remoteUpload">
<nointernet>nointernet</nointernet>
<vodafone>vodafone</vodafone>
</remoteUpload>
</configuration>"""
d = xmltodict.parse(xml)