XML using standard Python modules
Alexey Marinichev
lyosha at lyosha.2y.net
Thu Sep 13 17:53:54 EDT 2001
More information about the Python-list mailing list
Thu Sep 13 17:53:54 EDT 2001
- Previous message (by thread): XML using standard Python modules
- Next message (by thread): XML using standard Python modules
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
In article <k2nuptg6i18n0l48sg2llnl5kho3hqp4g3 at 4ax.com>, Dale Strickland-Clark <dale at riverhall.NOSPAM.co.uk> wrote: >I'm trying to get to grips with XML using Python. > >A simple app to start with, it will read a plain text file containing >some data, convert it to XML and write an XML file. > >Later that file will be used as a random-access data source. > >Where do I start? > >I'm reading this: http://py-howto.sourceforge.net/xml-howto/SAX.html >at the moment. Is it up-to-date? > >There seems to be half a dozen XML modules. Which is the right one for >this type of application? XML.SAX? > >Thanks for any pointers. Minidom is pretty straightforward: >>> from xml.dom.minidom import Document >>> d = Document() >>> e1 = d.createElement("foo") >>> e1.attributes["attr"] = "value" >>> print e1.toxml() <foo attr="value"/> >>> e2 = d.createElement("bar") >>> e21 = d.createTextNode("Hello, world!") >>> e2.appendChild(e21) <DOM Text node "Hello, wor..."> >>> print e2.toxml() <bar>Hello, world!</bar> >>> e = d.createElement("main") >>> d.appendChild(e) <DOM Element: main at 135810908> >>> print d.toxml() <?xml version="1.0" ?> <main/> >>> e.appendChild(e1) <DOM Element: foo at 135830820> >>> e.appendChild(e2) <DOM Element: bar at 135838812> >>> print d.toxml() <?xml version="1.0" ?> <main><foo attr="value"/><bar>Hello, world!</bar></main> >>> e.appendChild(e1.cloneNode(1)) <DOM Element: foo at 135607220> >>> e.appendChild(e1.cloneNode(1)) <DOM Element: foo at 135837932> >>> e.appendChild(e1.cloneNode(1)) <DOM Element: foo at 135841092> >>> e.appendChild(e2.cloneNode(1)) <DOM Element: bar at 135841796> >>> e.appendChild(e1.cloneNode(1)) <DOM Element: foo at 135913204> >>> e.appendChild(e1.cloneNode(1)) <DOM Element: foo at 135914692> >>> e.appendChild(e1.cloneNode(1)) <DOM Element: foo at 135606788> >>> print e.toxml() <main><foo attr="value"/><bar>Hello, world!</bar><foo attr="value"/><foo attr="value"/><foo attr="value"/><bar>Hello, world!</bar><foo attr="value"/><foo attr="value"/><foo attr="value"/></main> >>> print e.toprettyxml(indent=" ") <main> <foo attr="value"/> <bar> Hello, world! </bar> <foo attr="value"/> <foo attr="value"/> <foo attr="value"/> <bar> Hello, world! </bar> <foo attr="value"/> <foo attr="value"/> <foo attr="value"/> </main> >>> I meant to do d.toprettyxml in the last command... Anyhow, you get the idea. cloneNode(1) means "deep" clone, that is, with all subelements. Here's some more: >>> bars = e.getElementsByTagName("bar") >>> bars [<DOM Element: bar at 135838812>, <DOM Element: bar at 135841796>] >>> bar = bars[1] >>> text = bar.firstChild >>> text.data 'Hello, world!' >>> text.data = "Good bye." >>> print d.toprettyxml(indent=" ") <?xml version="1.0" ?> <main> <foo attr="value"/> <bar> Hello, world! </bar> <foo attr="value"/> <foo attr="value"/> <foo attr="value"/> <bar> Good bye. </bar> <foo attr="value"/> <foo attr="value"/> <foo attr="value"/> </main> >>> To make a document out of an XML string, use "parseString"; to parse a file use "parse". Xerces API javadoc is where I learned this stuff. It is slightly different in Python, but it's still very close. --Lyosha
- Previous message (by thread): XML using standard Python modules
- Next message (by thread): XML using standard Python modules
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list