views:

191

answers:

2

I have this xml model.

link text

So I have to add some node (see the text commented) to this file. How I can do it?

I have writed this partial code but it doesn't work:

xmldoc=minidom.parse(directory)
child = xmldoc.createElement("map")
for node in xmldoc.getElementsByTagName("Environment"):
    node.appendChild(child)

Thanks in advance.

+1  A: 

I downloaded your sample xml file and your code works fine. Your problem is most likely with the line: xmldoc=minidom.parse(directory), should this not be the path to the file you are trying to parse not to a directory? The parse() function parses an XML file it does not automatically parse all the XML files in a given directory.

If you change your code to something like below this should work fine:

xmldoc=minidom.parse("directory/model_template.xml")
child = xmldoc.createElement("map")
    for node in xmldoc.getElementsByTagName("Environment"):
        node.appendChild(child)

If you then execute the statement: print xmldoc.toxml() you will see that the map element has indeed been added to the Environment element: <Environment><map/></Environment>.

Tendayi Mawushe
If it turns out the file is semi-corrupt, you can try using BeautifulStoneSoup.
SapphireSun
Agreed, but in this case it was not necessary.
Tendayi Mawushe
A: 

But if I have to add xml text that is included in a second file, how I can modify the line node.appendChild(child) ?

Thanks a lot.

michele