使用ElementTree的XML配置文件有问题。我希望有一种简单的方法来找到元素的文本,而不管它在XML树中的位置。从文档中可以看出,我应该能够使用findtext()来完成这个任务,但是无论如何,我都不会得到任何返回。我哪里出问题了?每个人都告诉我,XML在Python中非常容易处理,但我只遇到了麻烦。
configFileName = 'file.xml'
def configSet (x):
if os.path.exists(configFileName):
tree = ET.parse(configFileName)
root = tree.getroot()
return root.findtext(x)
hiTemp = configSet('hiTemp')
print hiTemp和XML
<configData>
<units>
<temp>F</temp>
</units>
<pins>
<lights>1</lights>
<fan>2</fan>
<co2>3</co2>
</pins>
<events>
<airTemps>
<hiTemp>80</hiTemp>
<lowTemp>72</lowTemp>
<hiTempAlarm>84</hiTempAlarm>
</airTemps>
<CO2>
<co2Hi>1500</co2Hi>
<co2Low>1400</co2Low>
<co2Alarm>600</co2Alarm>
</CO2>
</events>
<settings>
<apikeys>
<prowl>
<apikey>None</apikey>
</prowl>
</apikeys>
</settings>
预期结果
80实际效果
None发布于 2014-07-19 17:39:45
findtext需要一个完整的路径,但是您已经给出了一个相对路径,所以您无法找到要查找的元素。
您可以提供良好的xpath,也可以修改代码。
def configSet(x):
if os.path.exists(configFileName):
tree = ET.parse(configFileName)
root = tree.getroot()
for e in root.getiterator():
t = e.findtext(x)
if t is not None:
return t更新1:
如果您希望将所有匹配的文本作为列表,则代码有一点不同。
def configSet(x):
matches = []
if os.path.exists(configFileName):
tree = ET.parse(configFileName)
root = tree.getroot()
for e in root.getiterator():
t = e.findtext(x)
if t is not None:
matches.append(t)
return matches发布于 2014-07-19 17:30:04
https://stackoverflow.com/questions/24842952
复制相似问题