Привет ниже XML Я пытаюсь обновить перечисленные ниже теги в родительском root TotalGroupLists, затем в дочернем.
Мне нужно иметь возможность обновлять имена в тегах, сопоставленных с «AndySmith: London: 123», «Mark: Smithmanchester $ @!» и "Listed_Names" соответственно. в одном каталоге для большого числа XML файлов (100 +).
<name>Joe:bloggs</name>
, которые будут обновлены как <name>AndySmith:London123</name>
<name>John:Smith2$</name>
, которые будут обновлены как <name>Mark: Smithmanchester$@!</name>
<name>List:name</name>
будет обновлен как <name>Listed_Names</name>
Мой python скрипт не вносит никаких изменений в имена, но меняет характер XML на ascii, я не уверен Почему.
Любая помощь в том, что мне не хватает и что я должен изменить? (Я новичок в кодировании).
import xml.etree.ElementTree as ET
import os
my_dir = r'C:\Users\TEST\TestBatch1'
map_ = {'Joe:bloggs': 'AndySmith:London:123',
'John:Smith2$': 'Mark: Smithmanchester$@!,
'List:name': 'Listed_Names'}
for fn in os.listdir(my_dir):
pathfn = os.path.join(my_dir,fn)
if os.path.isfile(pathfn):
tree = ET.parse(pathfn)
root = tree.getroot()
for key in map_:
for child in root.iter(key):
child.text = map_[key]
print(map_[key])
ET.tostring(root, encoding='utf8').decode('utf8'))
tree.write(pathfn, xml_declaration=True)
'''
Single XML file example to data clean:
<?xml version="1.0" encoding="UTF-8"?><validation-request xmlns="http:// www.xyz.com/xxx/yyy/xml/2.0/validation-request">
<type>Names</type>
<priority>4 High</priority>
<param>
<name>request.name</name>
<value>Test data</value>
</param>
<param>
<name>validated-date</name>
<value>2020-01-07</value>
</param>
<output-destinations>
<output-destination xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="data-output-destination">
<namespace>Test Name</namespace>
<instance>UAT</instance>
<namespaceDate>2020-01-07</namespaceDate>
<organisationalUnit>DataXYZ</organisationalUnit>
<cId>ALL.DATA</cId>
</output-destination>
</output-destinations>
<param>
<name>Live-env-list</name>
<value>Live,test</value>
</param>
<analysis>
<name>framework</name>
<version>Default</version>
</analysis>
<TotalGroupLists>
<List>
<name>Joe:bloggs</name>
</List>
<List>
<name>John:Smith:Davies</name>
</List>
<List>
<name>List:name</name>
</List>
</TotalGroupLists>
</validation-request>