Myratel
Myratel

Reputation: 55

minidom appendchild/insertBefore

I'm using Python and minidom to insert Data in an existing XML-file. When I do so, I get correct XML-code but it doesn't look as I want it. This is an example for my xml-file at the beginning.

<?xml version="1.0" ?>
<sim>
    <tool name="A"/>
    <calcSequence>
        <entry>FD_so</entry>
        <entry>FD_ped</entry>
        <entry>FD_veh</entry>
    </calcSequence>
</sim>

Now the code:

calcSequence = doc.getElementsByTagName('calcSequence')[0]
entrys = calcSequence.getElementsByTagName('entry')
hnode = doc.createElement('entry')
htext = doc.createTextNode('test')
hnode.appendChild(htext)
calcSequence.insertBefore(hnode,entrys[2])

And the result:

<calcSequence>
    <entry>FD_so</entry>
    <entry>FD_ped</entry>
    <entry>test</entry><entry>FD_veh</entry>
</calcSequence>

Is there a way to insert the missing newline between the 2 <entry>s? doc.toprettyxml() isn't a solution, since this is only a small part of the xml, and I do not want to insert blank lines after every line in the document.

Upvotes: 5

Views: 6451

Answers (1)

bdesham
bdesham

Reputation: 16089

Have you tried just inserting a newline in a text node?

# Put this after your existing code
newline = doc.createTextNode('\n')
calcSequence.insertBefore(newline, entrys[2])

Upvotes: 5

Related Questions