2013-12-02 3 views
3

Я использую Python и minidom для вставки данных в существующий XML-файл. Когда я это делаю, я получаю правильный XML-код, но он выглядит не так, как я хочу. Это пример моего xml-файла в начале.minidom appendchild/insertBefore

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

Теперь код:

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

И результат:

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

Есть ли способ, чтобы вставить недостающий символ новой строки между 2 <entry> с? doc.toprettyxml() не является решением, так как это лишь небольшая часть xml, и я не хочу вставлять пустые строки после каждой строки в документе.

ответ

3

Вы пытались просто вставить новую строку в текстовый узел?

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

Спасибо, это делает его намного лучше, даже если это не целое решение. У меня было добавлено правильное количество пробелов, чтобы получить довольно сложный xml. – Myratel

Смежные вопросы