Обновление XML-элементов и значений атрибутов с использованием Python etree

Я очень новичок в написании сценариев на Python, я пытаюсь использовать 2.7 ElementTree для анализа XML-файла, а затем обновлять / заменять определенные атрибуты элемента со значениями, полученными из файла данных теста. Идея состоит в том, чтобы иметь возможность использовать базовый XML-файл, чтобы затем загружать и заполнять поля конкретными тестовыми данными и т. Д., А затем сохранять как уникальный XML-файл

Моя идея для решения заключалась в том, чтобы выставить новые данные из файла CSV, читая файл в строку, затем нарезая строку на отметках разделителя и добавив в список (сделанный так). Затем используйте etree, чтобы как-то обновить или удалить / заменить атрибут значением specialc из списка.

Я просмотрел документацию Python ElementTree и увидел объекты clear () и remove (), но я не знаю, как синтаксис их правильно использовать

Примером XML для изменения является, как показано ниже, атрибуты с XXXXX должны быть заменены / обновлены:

<TrdCaptRpt RptID="10000001" TransTyp="0"> <RptSide Side="1" Txt1="XXXXX"> <Pty ID="XXXXX" R="1"/> </RptSide> </TrdCaptRpt> 

Предполагаемый результат будет, например:

 <TrdCaptRpt RptID="10000001" TransTyp="0"> <RptSide Side="1" Txt1="12345"> <Pty ID="ABCDE" R="1"/> </RptSide> </TrdCaptRpt> 

Как использовать команды etree для изменения базового XML для обновления с помощью элемента из списка []?

  • etree Clone Node
  • Как вставить пространство имен и префиксы в строку XML с помощью Python?
  • получить всех родителей узла xml с помощью python
  • parse .xml с префиксом на тегах? xml.etree.ElementTree
  • One Solution collect form web for “Обновление XML-элементов и значений атрибутов с использованием Python etree”

    Для такого рода работ я всегда рекомендую BeautifulSoup потому что он имеет очень простой интерфейс для изучения API:

     from BeautifulSoup import BeautifulStoneSoup as Soup xml = """ <TrdCaptRpt RptID="10000001" TransTyp="0"> <RptSide Side="1" Txt1="XXXXX"> <Pty ID="XXXXX" R="1"/> </RptSide> </TrdCaptRpt> """ soup = Soup(xml) rpt_side = soup.trdcaptrpt.rptside rpt_side['txt1'] = 'Updated' rpt_side.pty['id'] = 'Updated' print soup 

    Пример вывода:

     <trdcaptrpt rptid="10000001" transtyp="0"> <rptside side="1" txt1="Updated"> <pty id="Updated" r="1"> </pty></rptside> </trdcaptrpt> 

    Изменить: с помощью xml.etree.ElementTree вы можете использовать следующий скрипт:

     from xml.etree import ElementTree as etree xml = """ <TrdCaptRpt RptID="10000001" TransTyp="0"> <RptSide Side="1" Txt1="XXXXX"> <Pty ID="XXXXX" R="1"/> </RptSide> </TrdCaptRpt> """ root = etree.fromstring(xml) rpt_side = root.find('RptSide') rpt_side.set('Txt1', 'Updated') pty = rpt_side.find('Pty') pty.set('ID', 'Updated') print etree.tostring(root) 

    Пример вывода:

     <TrdCaptRpt RptID="10000001" TransTyp="0"> <RptSide Side="1" Txt1="Updated"> <Pty ID="Updated" R="1" /> </RptSide> </TrdCaptRpt> 
    Python - лучший язык программирования в мире.