I'm trying to iterate through repeating elements to extract data using
libxml2 but I'm having zero luck - any help would be appreciated.

My XML source is similar to the following - I'm trying to extract the
line number and product code from the repeating line elements:

<order xmlns="some-ns">
  <header>
    <orderno>123456</orderno>
  </header>
  <lines>
    <line>
      <lineno>1</lineno>
      <productcode>PENS</productcode>
    </line>
    <line>
      <lineno>2</lineno>
      <productcode>STAPLER</productcode>
    </line>
    <line>
      <lineno>3</lineno>
      <productcode>RULER</productcode>
    </line>
  </lines>
</order>

With the following code I can get at the non-repeating elements in the
header, and get the lines elements, but cannot extract the
lineno/productcode data via xpath:

        XmlDoc = libxml2.parseFile(XmlFile);
        XPathDoc = XmlDoc.xpathNewContext();
        XPathDoc.xpathRegisterNs('so',"some-ns");


        # Extract data from the order header
        PurchaseOrderNo =
XPathDoc.xpathEval('//so:order/so:header/so:orderno');

        # Extract data from the order lines
        for line in XPathDoc.xpathEval('//so:order/so:lines/so:line'):
                print line.content;

        # Explicitly free Xml document and XPath context
        XmlDoc.freeDoc()
        XPathDoc.xpathFreeContext()

Ideally, I'd like to select the line data using xpath (similar to an
XSLT query after a 'for-each' - i.e. xpathEval('so:lineno') and
xpathEval('so:productcode') once I've got the line element).

Any suggestions grealty appreciated!

Cheers, Nick.

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to