Как обновить XML файлы для указанных тегов c в одном каталоге пакетных файлов большого объема, используя Python - PullRequest
0 голосов
/ 11 января 2020

Привет ниже 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>

...