Differences between revisions 7 and 8
Revision 7 as of 2005-02-09 21:04:01
Size: 2380
Editor: 168-103-146-113
Comment: adding element w/ text inside
Revision 8 as of 2005-02-11 15:05:14
Size: 2388
Editor: FredDrake
Comment: use docs.python.org for links to the standard docs, don't include section number
Deletions are marked like this. Additions are marked like this.
Line 82: Line 82:
 * [http://www.python.org/doc/2.3.2/lib/module-xml.dom.minidom.html Python 13.7, xml.dom.minidom] -- API reference  * [http://docs.python.org/lib/module-xml.dom.minidom.html Python Library Reference, xml.dom.minidom] -- API documentation

Some notes on how to use xml.dom.minidom:

   1 from xml.dom.minidom import parse, parseString
   2 
   3 dom1 = parse( "foaf.rdf" )   # parse an XML file
   4 dom2 = parseString( "<myxml>Some data <empty/> some more data</myxml>" )
   5 print dom1.toxml()
   6 print dom2.toxml()

Examples of Use

  • node.nodeName
  • node.nodeValue
  • node.childNodes

Find Elements

You can manually walk through the childNodes tree, comparing nodeNames.

You might be able to use getElementsByTagName as well:

   1 from xml.dom.minidom import parse
   2 dom = parse("foo.xml")
   3 for node in dom.getElementsByTagName('bar'):  # visit every node <bar />
   4     print node.toxml()

getElementsByTagName, works recursively into the tree, I believe.

Add an Element

Create & add an XML element (Something like <foo />) to an XML document.

   1 from xml.dom.minidom import parse
   2 dom = parse("bar.xml")
   3 x = dom.createElement("foo")  # creates <foo />
   4 dom.childNodes[1].appendChild(x)  # appends at end of 1st child's children
   5 print dom.toxml()

Add an Element with Text Inside

Create & add an XML element to an XML document, the element has text inside.

ex: <foo>hello, world!</foo>

   1 from xml.dom.minidom import parse
   2 dom = parse("bar.xml")
   3 x = dom.createElement("foo")  # creates <foo />
   4 txt = dom.createTextNode("hello, world!")  # creates "hello, world!"
   5 x.appendChild(txt)  # results in <foo>hello, world!</foo>
   6 dom.childNodes[1].appendChild(x)  # appends at end of 1st child's children
   7 print dom.toxml()

Import a Node

You can use DOM 2 "importNode" to take part of one XML document, and put it into another XML document.

   1 from xml.dom.minidom import parse
   2 dom1 = parse("foo.xml")
   3 dom2 = parse("bar.xml")
   4 x = dom1.importNode(dom2.childNodes[1],  # take 2nd node in "bar.xml"
   5                     True)  # deep copy
   6 dom1.childNodes[1].appendChild(x)  # append to children of 2nd node in "foo.xml"
   7 print dom1.toxml()

MiniDom (last edited 2012-03-07 11:43:42 by MartinvonLoewis)

Unable to edit the page? See the FrontPage for instructions.