2015-05-19 80 views
0

我想再添加一個塊到xml文件。基本在父母Tss下,我想創建帶有其屬性的轉存Entry。這裏是我想要添加到XML文件中的內容:將父級追加到xml

  <Entry> 
      <System string = "rbs005019"/> 
      <Type string = "SECURE"/> 
      <User string = "rbs"/> 
      <Password string = "rbs005019"/> 
     </Entry> 

這裏是XML文件

<ManagedElement sourceType = "CELLO"> 
     <ManagedElementId string = "rbs005019"/> 
     <Tss> 
      <Entry> 
       <System string = "rbs005019"/> 
       <Type string = "NORMAL"/> 
       <User string = "rbs"/> 
       <Password string = "rbs005019"/> 
      </Entry> 
     </Tss> 
    </ManagedElement> 

所以梳理它應該看起來像後:

<ManagedElement sourceType = "CELLO"> 
     <ManagedElementId string = "rbs005019"/> 
     <Tss> 
      <Entry> 
       <System string = "rbs005019"/> 
       <Type string = "NORMAL"/> 
       <User string = "rbs"/> 
       <Password string = "rbs005019"/> 
      </Entry> 
      <Entry> 
       <System string = "rbs005019"/> 
       <Type string = "SECURE"/> 
       <User string = "rbs"/> 
       <Password string = "rbs005019"/> 
      </Entry> 
     </Tss> 
     </ManagedElement> 

我使用python 2.6和lxml.etree

回答

1

lxml具有功能parentElem.insert(position, new_element),允許您在其父項下插入新的子元素。你可以找到一個例子herehere(第元素是列表

1

下面是使用插入的例子:

In [31]: %cpaste 
Pasting code; enter '--' alone on the line to stop or use Ctrl-D. 
:current = """ <ManagedElement sourceType = "CELLO"> 
:  <ManagedElementId string = "rbs005019"/> 
:  <Tss> 
:   <Entry> 
:    <System string = "rbs005019"/> 
:    <Type string = "NORMAL"/> 
:    <User string = "rbs"/> 
:    <Password string = "rbs005019"/> 
:   </Entry> 
:  </Tss> 
: </ManagedElement> 
:""" 
:<EOF> 

In [32]: current = etree.fromstring(current) 

In [33]: %cpaste 
Pasting code; enter '--' alone on the line to stop or use Ctrl-D. 
:want = """ 
: <Entry> 
:   <System string = "rbs005019"/> 
:   <Type string = "SECURE"/> 
:   <User string = "rbs"/> 
:   <Password string = "rbs005019"/> 
:  </Entry> 
:""" 
:<EOF> 

In [34]: want = etree.fromstring(want) 

In [35]: current.find('./Tss').insert(0,want) 

In [36]: print etree.tostring(current, pretty_print=True) 
<ManagedElement sourceType="CELLO"> 
     <ManagedElementId string="rbs005019"/> 
     <Tss> 
      <Entry> 
      <System string="rbs005019"/> 
      <Type string="SECURE"/> 
      <User string="rbs"/> 
      <Password string="rbs005019"/> 
     </Entry> 
     <Entry> 
      <System string="rbs005019"/> 
      <Type string="NORMAL"/> 
      <User string="rbs"/> 
      <Password string="rbs005019"/> 
     </Entry> 
     </Tss> 
    </ManagedElement> 

插入情況與這一行: current.find('./Tss').insert(0,want)