使用 python 将 XML 文件中的值替换为向量的值

Replace values in XML file with values of a vector using python

我有一个 XML 文件,我需要使用 Python 代码将 "type" 之后的值替换为向量 v=[7,8,9] 中的值。我需要代码来识别 "type" 这个词,然后在下一行中更改参数的值。值 2 应替换为 v[0],3 应替换为 v[1],依此类推。有没有办法用 ElementTree 或 readlines 做到这一点?

<Model>
    <Function>
      <param>x</param>
      <param>type</param>
      <param>2</param>
      <param>5</param>
    </Function>
    <Function>
      <param>y</param>
      <param>type</param>
      <param>3</param>
      <param>2</param>
    </Function>
    <Function>
      <param>z</param>
      <param>type</param>
      <param>7</param>
      <param>9</param>
     </Function>
</Model>

这样试试:

from lxml import etree
doc = etree.fromstring(model)
v = [7, 8, 9]
targets = doc.xpath('//Model/Function/param[.="type"]')
for target in targets:
    chn = target.xpath('following-sibling::*[1]')[0]
    chn.text = str(v.pop(0))
print(etree.tostring(doc).decode())

输出:

<Model>
    <Function>
      <param>x</param>
      <param>type</param>
      <param>7</param>
      <param>5</param>
    </Function>
    <Function>
      <param>y</param>
      <param>type</param>
      <param>8</param>
      <param>2</param>
    </Function>
    <Function>
      <param>z</param>
      <param>type</param>
      <param>9</param>
      <param>9</param>
     </Function>
</Model>