python 2.7 - Add new value to xml file with lxml -
i have next xml file:
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <smrtpipesettings> <protocol version="2.2.0" id="rs_readsofinsert.1" editable="false"> <param name="name" label="protocol name"> <value>rs_readsofinsert</value> <input type="text"/> <rule required="true"/> </param> <param name="description"> <value>generates single-molecule consensus reads insert template, filters output quality , length, , optionally splits barcode. output in fasta , cmp.h5 format. </value> <textarea></textarea> </param> <param name="version" hidden="true"> <value>1</value> <input type="text"/> <rule type="digits" required="true" min="1.0"/> </param> <param name="state" hidden="true"> <value>active</value> <input value="active" type="radio"/> <input value="inactive" type="radio"/> </param> <param name="control" hidden="true"> <value></value> </param> <param name="fetch" hidden="true"> <value>common/protocols/preprocessing/fetch.1.xml</value> </param> <param name="filtering"> <value>common/protocols/consensus/readsofinsert.1.xml</value> <select multiple="true"> <import extension="xml" contenttype="text/directory">common/protocols/consensus</import> </select> </param> <param name="barcode" editableinjob="true"> <value>common/protocols/barcode/nobarcode.1.xml</value> <select multiple="false"> <import extension="xml" contenttype="text/directory">common/protocols/barcode</import> </select> </param> </protocol> <modulestage name="fetch" editable="true"> <module label="fetch v1" id="p_fetch" editableinjob="true"> <description>sets inputs</description> </module> </modulestage> <modulestage name="filtering" editable="true"> <module label="reads of insert" id="p_ccs" editableinjob="true"> <description>generates consensus sequences single molecules.</description> <param name="minfullpasses" label="minimum total passes"> <value>4</value> <title>the minimum number of full-length passes on insert deoxyribonucleic acid read included.</title> <input type="text"/> <rule type="digits" min="0.0" message="value must integer between 0 , 10" max="10.0"/> </param> <param name="minpredictedaccuracy" label="minimum predicted accuracy"> <value>90</value> <title>minimum read quality of insert</title> <input type="text"/> <rule type="digits" min="70.0" message="value must between 70 , 100" max="100.0"/> </param> <param name="minlength" label="minimum read length of insert (in bases)"> <value>400</value> <title>the minimum read length of insert (in bases). default: no minimum length </title> <input type="text"/> <rule type="digits" min="1.0" message="value must greater 0"/> </param> <param name="maxlength" label="maximum read length of insert (in bases)"> <title>the maximum read length of insert (in bases). default: no limit</title> <input type="text"/> <rule type="digits" min="1.0" message="value must greater 0"/> </param> </module> </modulestage> <modulestage name="barcode" editable="true"/> <filename>rs_readsofinsert.1.xml</filename> </smrtpipesettings> now want alter value @
<param name="minfullpasses" label="minimum total passes"> <value>4</value> i how extract value command:
doc.xpath("//param[@name='minfullpasses']/value/text()") so want alter value few others : 3,12,20 , 25. how can re-create values xml file?
i tried this:
for nrpass in doc.xpath("//param[@name='minfullpasses']/value/text()"): nrpass.attrib['value'] = 8 but gave me errors. hints appreciated!
what need alter text of parent node:
for nrpass in doc.xpath("//param[@name='minfullpasses']/value/text()"): parent = nrpass.getparent() parent.text = '8' or more simple:
for node in doc.xpath("//param[@name='minfullpasses']/value"): node.text = '8' python-2.7 lxml
No comments:
Post a Comment