On Fri, 20 Jan 2006, ps python wrote:
> In my XML file some attributes have text within an element. I want to > get that text. How can I do that. Hello, The problems you have don't have to do with the calls to gettext, but to selecting namespaced nodes as with your previous questions. Let's look at some of the code: > >>> for m in > tree.findall('//{org:hprd:dtd:hprdr2}proteinInteractor'): > ... k = gettext(m) > ... print k > ... The XML that you show us appears to use a different namespace than 'org:hprd:dtd:hprdr2': ###################################### <entrySet xmlns="net:sf:psidev:mi" ... ###################################### We should be using "net:sf:psidev:mi" rather than "org:hprd:dtd:hprdr2" when we look for those XML elements. The first refers to the Proteomics Standards Initiative, which is different than the one whose data you've been working with earlier. So be a bit more aware of the role of namespaces. Anyway, your question was about getting at attributes. Have you looked at the get() method of elements? There's documentation at: http://effbot.org/zone/element.htm#attributes Here's a small example: ###### >>> text = """<foo xmlns="some-prefix"> ... <message>Hello world</message> ... <message name="attr1">This has attributes</message> ... </foo>""" >>> from elementtree import ElementTree >>> tree = ElementTree.fromstring(text) >>> tree <Element {some-prefix}foo at 81c976c> >>> >>> for msg in tree: ... if msg.get('name'): ... print msg.get('name') ... print msg.text ... attr1 This has attributes ###### Good luck! _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor