libxml2 w/ xpath python bindings

B

Brian Donovan

Hi All,

I'm trying to get xpath to work with the libxml2 python bindings.
I'm using the following

doc = libxml2.parseFile(filename)
result = doc.xpathEval('//*')

My test XML file has 10 nodes in it and I'm trying to get an element named
'element' (from an relaxng schema).

If I use the xpath expression '//*' I'll get a list with 10 nodes
including the element element as expected. If I try '//element' I'm
getting an empty list with no errors. Any idea where I could be going
wrong?

Brian
 
B

Brian Donovan

Turns out the issue was with the XML namespaces. The document had a
defualt namespace which had to be declared:

xmlDoc = libxml2.parseFile(base + '/' + curfile)
ctxt = xmlDoc.xpathNewContext()
ctxt.xpathRegisterNs('rng',"http://relaxng.org/ns/structure/1.0")

elements = ctxt.xpathEval('//rng:element/@name')
for e in elements:
rnc.elements.append(e.content)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,055
Latest member
SlimSparkKetoACVReview

Latest Threads

Top