Acord xml

lxml

We will lxml to load and parse any xml data. You can install it on Debian/Ubuntu Linux using:

aptitude install python-lxml

Load acord xml file File

Load the file using lxml. This will create a doc element that will hold the whole structure of your file

from lxml import etree
doc = etree.parse ( 'PolicyNumberCompCollRequest.xml' )

How to navigate xml

etree.tostring(doc)

Or you can print for human viewing

etree.tostring(doc,pretty_print=True)

Or if you want to print with method: xml,html,text do:

print etree.tostring(doc,method='text',pretty_print=True)

}

Root

Ger root element

root=etree.ElementTree(doc.getroot())

Find out the name of root element. First line is same as above.

root=doc.getroot()
print root.tag

Loop through elements

for element in root.iter("*"):
    print element.tag,element.text,element.tail,element.attrib

Find elements

print root.find(".//Addr").tag
print root.find(".//Producer").tag
print root.find(".//InsuredOrPrincipal").tag
print root.find(".//PersPolicy").tag
print root.find(".//EffectiveDt").tag,root.find(".//EffectiveDt").text
print root.find(".//ExpirationDt").tag,root.find(".//ExpirationDt").text
print root.findall(".//EffectiveDt")
print root.findall(".//Coverage")

Example

for i in root.findall(".//EffectiveDt"):
...     print i.text
... 
2009-05-14
None

Lookup definitions:

nodename Selects all child nodes of the named node
/        Selects from the root node
//       Selects nodes in the document from the current node that match the selection no matter where they are
.        Selects the current node
..       Selects the parent of the current node
@        Selects attributes

bookstore       Selects all the child nodes of the bookstore element
/bookstore      Selects the root element bookstore

Note: If the path starts with a slash ( / ) it always represents an absolute path to an element!

bookstore/book  Selects all book elements that are children of bookstore
//book          Selects all book elements no matter where they are in the document
bookstore//book Selects all book elements that are descendant of the bookstore element, no matter where they are under the bookstore element
//@lang         Selects all attributes that are named lang

Discover details of elements

print len(root.findall(".//Coverage"))

References

  1. http://codespeak.net/lxml/tutorial.html

  2. http://www.w3schools.com/XPath/xpath_syntax.asp

MyWiki: acordxml (last edited 2010-10-13 21:55:19 by LukaszSzybalski)