Re: best way to parse a simple xml string?

Dave Kuhlman <[email protected]>
Newsgroups gmane.comp.python.xml
Message-ID <[email protected]>
On Fri, Dec 23, 2005 at 03:53:33PM -0500, Michael Gilbert wrote:
> Hello again,
> 
> I think I found a way to accomplish my goal with minidom.  Is this the most
> direct solution for my goal, or is there a simpler way?  Thanks again.

minidom is a good choice because it is part of the standard Python
library.  If you, or your users, are willing to install extra
software, you may want to look at ElementTree and lxml:

- ElementTree: http://effbot.org/zone/element-index.htm

- lxml: http://codespeak.net/lxml/

They are DOM-like, but some consider it a better DOM.

> 
> import xml.dom.minidom
> 
> document = '<user first="jean" last="valjean" dob="17290101" children="1"
> hobby="stealing bread" />'
> 
> dom = xml.dom.minidom.parseString(document)
> 
> t = dom.getElementsByTagName("user")[0]
> 
> if t.hasAttributes():
>     for cnt in range(0, t.attributes.length):
>         if t.attributes.item(cnt).nodeName == "hobby":
>             print 'hobby = ' + t.attributes.item(cnt).nodeValue

Yes.  But, there may be a slightly more direct way.  minidom
attributes are a NamedNodeMap which is a sort of dictionary-like
object.  So you can use indexing, for example, in your case,
something like:

    t.attributes['hobby']

and also:

    if t.attributes.has_key('hobby'):
        val = t.attributes['hobby']

Use dir(t.attributes) to get a list of other methods.

Dave

[snip]

-- 
Dave Kuhlman
http://www.rexx.com/~dkuhlman
_______________________________________________
XML-SIG maillist  -  [email protected]
http://mail.python.org/mailman/listinfo/xml-sig
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.