Python xml.dom, help reading attribute data

T

Thierry Lam

Let's say I have the following xml tag:

<para role="success">1</para>

I can't figure out what kind of python xml.dom codes I should invoke to
read the data 1? Any help please?

Thanks
Thierry
 
J

Jeremy Jones

Thierry said:
Let's say I have the following xml tag:

<para role="success">1</para>

I can't figure out what kind of python xml.dom codes I should invoke to
read the data 1? Any help please?

Thanks
Thierry
In [20]: import xml.dom.minidom

In [21]: s = '''<para role="success">1</para>'''

In [22]: x = xml.dom.minidom.parseString(s)

In [23]: print x.firstChild.firstChild.data
1


I doubt this really answers what you're really wanting to ask. And this
is a really really brittle way of trying to parse XML. But it answers
exactly what you're asking. Hope it gives you the start you need. Post
a follow-up when you have more questions.

JMJ
 
A

Alan Kennedy

[Thierry Lam]
Let's say I have the following xml tag:

<para role="success">1</para>

I can't figure out what kind of python xml.dom codes I should invoke to
read the data 1? Any help please?

This is job for xpath.

#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
from xml import xpath
from xml.dom import minidom

doc = """<para role="success">1</para>"""

mydom = minidom.parseString(doc)
#result_nodes = xpath.Evaluate("/para/text()", mydom)
#result_nodes = xpath.Evaluate("/para[1]/text()", mydom)
result_nodes = xpath.Evaluate("/para[@role='success']/text()", mydom)
for ix, r in enumerate(result_nodes):
print "result %d: %s" % (ix, r)
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Xpath support is a part of the PyXML package, which you can get from here

http://pyxml.sourceforge.net

Xpath tutorials from here

http://www.zvon.org/xxl/XPathTutorial/General/examples.html
http://www.w3schools.com/xpath/

there-are-other-ways-to-do-it-but-i-like-xpath-ly'yrs,
 
G

Giovanni Bajo

Thierry said:
Let's say I have the following xml tag:

<para role="success">1</para>

I can't figure out what kind of python xml.dom codes I should invoke
to read the data 1? Any help please?

Thanks
Thierry


If you use elementtree:
from elementtree import ElementTree
node = ElementTree.fromstring("""<para role="success">1</para>""")
node.text '1'
node.attrib["role"]
'success'
 

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,997
Messages
2,570,241
Members
46,833
Latest member
BettyeMacf

Latest Threads

Top