Python: Write a new xml file based on a xml template -


i want generate new xml file (new.xml) based on xml template (template.xml) using xml.etree.elementtree. idea change value of <name> tag 'all' 'new' leaving rest of new.xml file looking template.xml. can change value of the<name> new.xml not same template.xml

here template.xml:

<?xml version="1.0"?> <example>   <version>15.0</version>   <lastchange/>   <theme>black</theme>   <group>     <name>all</name>     <description><![cdata[all users]]></description>     <scope>system</scope>     <gid>1998</gid>   </group> </example> 

and here new.xml:

<example>   <version>15.0</version>   <lastchange />   <theme>black</theme>   <group>     <name>new</name>     <description>all users</description>     <scope>system</scope>     <gid>1998</gid>   </group> </example> 

as can notice, in new.xml first line missing , value of <description> tag not have ![cdata][] structure. script wrote , using:

import xml.etree.elementtree et  def load_xml(name):     ''' takes xml file input. outputs elementtree , element'''     tree = et.parse(name)     root = tree.getroot()     return tree, root  if __name__ == "__main__":      # change , write new xml      tree, root = load_xml('template.xml')      group = root.find('group')      group.find('name').text = 'new'      tree.write('new.xml') 

any help? thank you

lxml provides compatible api, need specify strip_cdata=false parameter, , use exact same codes everywhere else :

form lxml import etree et  def load_xml(name):     ''' takes xml file input. outputs elementtree , element'''     # specify parser setting     parser = et.xmlparser(strip_cdata=false)     # pass parser actual parsing     tree = et.parse(name, parser)      root = tree.getroot()     return tree, root  if __name__ == "__main__":      # change , write new xml      tree, root = load_xml('template.xml')      group = root.find('group')      group.find('name').text = 'new'      tree.write('new.xml') 

Comments

Popular posts from this blog

javascript - Laravel datatable invalid JSON response -

java - Exception in thread "main" org.springframework.context.ApplicationContextException: Unable to start embedded container; -

sql server 2008 - My Sql Code Get An Error Of Msg 245, Level 16, State 1, Line 1 Conversion failed when converting the varchar value '8:45 AM' to data type int -