2016-04-18 9 views
2

ich mit wie diese gebaut Kinder ein lxml Element haben:lxml Mit einer Zeichenfolge als Unterelement hinzufügen

xml = etree.Element('presentation') 
format_xml = etree.SubElement(xml, 'format') 
content_xml = etree.SubElement(xml, 'slides') 

ich dann mehrere Saiten haben, dass ich es immer und fügen jeweils als Kind-Element möchte iterieren Dias. Jede Zeichenfolge wird etwa so aussehen:

<slide1> 
    <title>My Presentation</title> 
    <subtitle>A sample presentation</subtitle> 
    <phrase>Some sample text 
     <subphrase>Some more text</subphrase> 
    </phrase> 
</slide1> 

Wie kann ich diese Zeichenfolgen als untergeordnete Elemente an das Element Folien anhängen?

Antwort

2

einfach anhängen:

import lxml.etree as etree 

xml = etree.Element('presentation') 
format_xml = etree.SubElement(xml, 'format') 
content_xml = etree.SubElement(xml, 'slides') 
new = """<slide1> 
    <title>My Presentation</title> 
    <subtitle>A sample presentation</subtitle> 
    <phrase>Some sample text 
     <subphrase>Some more text</subphrase> 
    </phrase> 
</slide1>""" 


content_xml.append(etree.fromstring(new)) 


print(etree.tostring(xml,pretty_print=1)) 

Welche werden Sie geben:

<presentation> 
    <format/> 
    <slides> 
    <slide1> 
    <title>My Presentation</title> 
    <subtitle>A sample presentation</subtitle> 
    <phrase>Some sample text 
     <subphrase>Some more text</subphrase> 
    </phrase> 
</slide1> 
    </slides> 
</presentation> 
1

fromstring() Funktion würde eine XML-Zeichenfolge direkt in eine Element Instanz laden, die Sie anfügen können:

from lxml import etree as ET 

slide = ET.fromstring(xml_string) 
content_xml.append(slide)