2015-04-18 5 views
0

У меня есть некоторые проблемы со структурой данных вставки в XML-документ. Но без большого успеха. У меня есть файл, например.Вставка элемента Minidom в xml

<?xml version="1.0" ?> 
<marl version="2.1" xmlns="xxxx.xsd"> 
    <mcdata id="2" scope="all" type="plan"> 
     <header> 
      <log action="created"/> 
     </header> 
     <mObject class="foo" distName="a-1"> 
      <p name="Ethernet">false</p> 
      <list name="pass"/> 
     </mObject> 
     <mObject class="bar" distName="a-1/b-2"> 
      <p name="Voltage">false</p> 
     </mObject> 
    </mcdata> 
</marl> 

Базовая версия моего кода идет как это, но, кажется, не имеют никакого эффекта, потому что output.xml является thesame, как mini.xml.

from xml.dom.minidom import * 
document = parse('mini.xml') 
mo = document.getElementsByTagName("mObject") 
element = document.createElement("mObject") 
mo.append(element) 
with open('output.xml', 'wb') as out: 
    document.writexml(out) 
    out.close() 
+0

каков эффект? строка 'document = parse ('mini.xml')' создает для меня ошибку синтаксического анализа: 'xml.parsers.expat.ExpatError: элемент не найден: строка 14, столбец 0' – Pynchia

+0

Извините, мой плохой. Исходный xml был плохо отформатирован. Проблема теперь исправлена. – qworld

+0

, если это помогает: с помощью этого кода 'element = document.createElement (" mObject ") element.appendChild (document.createTextNode (" Hello ")) document.childNodes [0] .childNodes [1] .appendChild (element) 'Я получил' Hello 'как дочерний элемент' ' – Pynchia

ответ

0

Создать новый узел и украсить его по мере необходимости:

#create node <mObject> 
element = document.createElement("mObject") 
#add text content to the node 
element.appendChild(document.createTextNode("content")) 
#add attribute id to the node 
element.setAttribute("id" , "foo") 
#result: <mObject id="foo">content</mObject> 

Добавьте вновь созданный узел в родительский узел:

#select a parent node 
mc = document.getElementsByTagName("mcdata")[0] 
#append the new node as child of the parent 
mc.appendChild(element) 
Смежные вопросы