简体   繁体   中英

How to modify a xml using lxml in Python

I want to modify this file so that the BOOKSEQNUM text will increment by 10 after starting from 1000, ie the first node text as 1010 then 1020 so on:

<root>
<BOOKSEQNUM DOCID="HKLAC_V14.0002.para0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0003.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0004.para0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0005.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0006.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0016.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0022.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0031.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0041.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0046.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0047.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0058.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0063.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0070.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0078.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0084.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0087.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0088.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0093.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0100.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0107.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0117.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0120.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0123.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0129.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0139.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0146.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0161.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0169.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0180.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0189.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0202.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0212.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0218.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0219.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0220.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0236.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0241.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0250.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0260.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0267.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0272.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0281.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0290.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0293.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0298.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0303.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0319.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0328.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0336.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0343.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0357.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0363.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0369.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0378.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0382.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0388.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0392.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0393.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0401.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0414.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0424.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0435.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0442.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0447.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0459.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0465.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0473.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0477.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0481.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0492.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0496.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0499.para0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0500.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0501.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0504.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0505.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0512.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0518.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0524.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0531.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0542.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0547.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0548.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0559.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0576.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0577.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0584.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0602.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0609.subpara0"></BOOKSEQNUM>
<BOOKSEQNUM DOCID="HKLAC_V14.0617.subpara0"></BOOKSEQNUM>
</root>

This is the python script i have written, how to write to the same document?

from lxml import etree

myXML = r"C:/Users/DalalNS/Desktop/splitingthecontent/HK_Chunking_Scripts/HKEFP/BookSeq_HKEFP_Aviation.xml"
tree = etree.parse(myXML)
root = tree.getroot()     
code = root.xpath('//root/BOOKSEQNUM')
count=1000
Root = etree.Element('root')
doc = etree.ElementTree(Root)

for i in code:
    print(i.attrib)
    count=count+10
    i.text=str(count)
    print(i.text)
from lxml import etree

filename = r'path/to/your/file.xml'  # change this
with open(filename, 'r') as f:
    tree = etree.parse(f)

start = 1000
for node in tree.findall('./'):
    node.text = str(start + 10)
    start += 10

with open(filename, 'wb') as f:
    tree.write(f)

Note: writing must be in binary mode, otherwise you'll get a TypeError .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM