Спасибо за ответы! Благодаря вам, почти все получилось. Добавил обработку всех файлов в папке. Теперь затык в другом месте, пытаюсь получить значение с второй Page, но скрипт видит и проходит только по первой.
import xml.etree.ElementTree as etree
import os
import glob
f2 = open("D:report_all.txt", 'w')
directory = 'D:/folder_reports/'
fileList = glob.glob(directory + '/*.xml')
valueCPU ='--'
valueOS ='--'
valuepc ='--'
for fileName in fileList:
root = etree.parse(fileName)
for page in root.findall('./Page'):
for item in page.findall('./Item'):
if item.find('Title').text.lower() == 'computer':
valuepc = item.find('Value').text
elif item.find('Title').text.lower() == 'operating system':
valueOS = item.find('Value').text
elif item.find('Title').text.lower() == 'directx':
valueCPU = item.find('Value').text
f2.write(valuepc + '\t' + valueOS + '\t' + valueCPU + '\n')
f2.close()
<?xml version="1.0" encoding="ISO-8859-1"?>
<Report><Lang>en</Lang>
<Page><Title>Report</Title><Icon>112</Icon><MenuTitle></MenuTitle><MenuIcon>0</MenuIcon>
<Item><Title>Version</Title><Icon>112</Icon><ID>257</ID><Value>AIDA64 v2.85.2400</Value></Item>
<Item><Title>Benchmark Module</Title><Icon>112</Icon><ID>266</ID><Value>3.0.492-x32</Value></Item>
<Item><Title>Homepage</Title><Icon>116</Icon><ID>259</ID><Value>http://www.aida64.com/</Value></Item>
<Item><Title>Report Type</Title><Icon>91</Icon><ID>260</ID><Value>Report Wizard [ TRIAL VERSION ]</Value></Item>
<Item><Title>Computer</Title><Icon>46</Icon><ID>261</ID><Value>comp</Value></Item>
<Item><Title>Generator</Title><Icon>47</Icon><ID>262</ID><Value>admin</Value></Item>
<Item><Title>Operating System</Title><Icon>38</Icon><ID>263</ID><Value>Microsoft Windows XP Professional 5.1.2600 (WinXP RTM)</Value></Item>
<Item><Title>Date</Title><Icon>64</Icon><ID>264</ID><Value>2013-06-03</Value></Item>
<Item><Title>Time</Title><Icon>131</Icon><ID>265</ID><Value>11:31</Value></Item>
</Page>
<Page><Title>Summary</Title><Icon>46</Icon><MenuTitle>Computer</MenuTitle><MenuIcon>46</MenuIcon>
<Group><Title>Computer</Title><Icon>46</Icon>
<Item><Title>Computer Type</Title><Icon>46</Icon><ID>582</ID><Value>Ìíîãîïðîöåññîðíûé êîìïüþòåð ñ ACPI (Mobile)</Value></Item>
<Item><Title>Operating System</Title><Icon>38</Icon><ID>513</ID><Value>Microsoft Windows XP Professional</Value></Item>
<Item><Title>OS Service Pack</Title><Icon>40</Icon><ID>540</ID><Value>[ TRIAL VERSION ]</Value></Item>
<Item><Title>Internet Explorer</Title><Icon>115</Icon><ID>564</ID><Value>8.0.6001.18702 (IE 8.0)</Value></Item>
<Item><Title>DirectX</Title><Icon>49</Icon><ID>566</ID><Value>4.09.00.0904 (DirectX 9.0c)</Value></Item>
</Group>
</Page>
</Report>
Т.е. последнее значение “Time”, такое чувство, что цикл просто не заходит во вторую группировку Page. В чем причина? Ведь for page in root.findall('./Page'): должен запустить цикл по всем Page?
В текстовом файле у меня результат
comp Microsoft Windows XP Professional 5.1.2600 (WinXP RTM) --