The following python code
import xml.etree.cElementTree as ET
import time
import fileinput
import re
ts = str(int(time.time()))
modifiedline =''
for line in fileinput.input("singleoutbound.xml"):
line = re.sub('OrderName=".*"','OrderName="'+ts+'"', line)
line = re.sub('OrderNo=".*"','OrderNo="'+ts+'"', line)
line = re.sub('ShipmentNo=".*"','ShipmentNo="'+ts+'"', line)
line = re.sub('TrackingNo=".*"','TrackingNo="'+ts+'"', line)
line = re.sub('WaveKey=".*"','WaveKey="'+ts+'"', line)
modifiedline=modifiedline+line
Returns the modifiedline string with some lines truncated wherever the first match is found
How do I ensure it returns the complete string for each line?
Edit:
I have changed the way I am solving this problem, inspired by Tomalak's answer
import xml.etree.cElementTree as ET
import time
ts = str(int(time.time()))
doc = ET.parse('singleoutbound.xml')
for elem in doc.iterfind('//*'):
if 'OrderName' in elem.attrib:
elem.attrib['OrderName'] = ts
if 'OrderNo' in elem.attrib:
elem.attrib['OrderNo'] = ts
if 'ShipmentNo' in elem.attrib:
elem.attrib['ShipmentNo'] = ts
if 'TrackingNo' in elem.attrib:
elem.attrib['TrackingNo'] = ts
if 'WaveKey' in elem.attrib:
elem.attrib['WaveKey'] = ts
doc.write('singleoutbound_2.xml')