Differences between revisions 10 and 11
Revision 10 as of 2005-02-12 22:13:43
Size: 2431
Editor: aaron
Comment:
Revision 11 as of 2008-11-15 13:59:47
Size: 2435
Editor: localhost
Comment: converted to 1.6 markup
Deletions are marked like this. Additions are marked like this.
Line 82: Line 82:
 * [http://docs.python.org/lib/module-xml.dom.minidom.html Python Library Reference, xml.dom.minidom] -- API documentation
 * [http://www.faqs.org/docs/diveintopython/kgp_divein.html#kgp.divein Dive into Python, Chapter 5] -- works almost entirely out of the minidom API
 * [[http://docs.python.org/lib/module-xml.dom.minidom.html|Python Library Reference, xml.dom.minidom]] -- API documentation
 * [[http://www.faqs.org/docs/diveintopython/kgp_divein.html#kgp.divein|Dive into Python, Chapter 5]] -- works almost entirely out of the minidom API
Line 87: Line 87:
 * ["Sax"], PythonXml  * [[Sax]], PythonXml

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()

See Also

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

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