For a project, I'm working on processing an XML file in python. An example of the file:
Code: Select all
<?xml version="1.0"?>
<log>
<header>
<name>Alarm Log</name>
<serial_no>123456789</serial_no>
<sw_ver>W</sw_ver>
<file_ver>1.0</file_ver>
</header>
<record>
<data name="date">03-Sep-2014</data>
<data name="time">01:15:48pm</data>
<data name="event" id="123">Event text</data>
<data name="urgency" id="456">Urgency text</data>
<data name="alarm" id="15">Alarm text</data>
<data name="analysis">Analysis text</data>
</record>
<record>
<data name="date">01-Sep-2014</data>
<data name="time">12:45:14pm</data>
<data name="event" id="789">Detection</data>
<data name="urgency" id="012">HIGH</data>
<data name="alarm" id="11">ALARM TEXT</data>
<data name="analysis">Analysis text</data>
</record>
</log>
Code: Select all
import xmltodict
import ordereddict
with open('C:\\alarms_log.xml') as fd:
doc = xmltodict.parse(fd.read())
serial = doc['log']['header']['serial_no']
device = doc['log']['header']['name']
print serial
print device
Code: Select all
123456789
Alarm Log
In the example above, I used data = doc['log']['record'][0] and data = doc['log']['record'][1] to see what the output is:
Code: Select all
data = doc['log']['record'][0]
data1 = doc['log']['record'][1]
print data
print data1
Code: Select all
OrderedDict([(u'data', [OrderedDict([(u'@name', u'date'), ('#text', u'03-Sep-2014')]), OrderedDict([(u'@name', u'time'), ('#text', u'01:15:48pm')]), OrderedDict([(u'@name', u'event'), (u'@id', u'123'), ('#text', u'Event text')]), OrderedDict([(u'@name', u'urgency'), (u'@id', u'456'), ('#text', u'Urgency text')]), OrderedDict([(u'@name', u'alarm'), (u'@id', u'15'), ('#text', u'Alarm text')]), OrderedDict([(u'@name', u'analysis'), ('#text', u'Analysis text')])])])
and:
OrderedDict([(u'data', [OrderedDict([(u'@name', u'date'), ('#text', u'01-Sep-2014')]), OrderedDict([(u'@name', u'time'), ('#text', u'12:45:14pm')]), OrderedDict([(u'@name', u'event'), (u'@id', u'789'), ('#text', u'Detection')]), OrderedDict([(u'@name', u'urgency'), (u'@id', u'012'), ('#text', u'HIGH')]), OrderedDict([(u'@name', u'alarm'), (u'@id', u'11'), ('#text', u'ALARM TEXT')]), OrderedDict([(u'@name', u'analysis'), ('#text', u'Analysis text')])])])
Thanks!