将子元素添加到python elementtree中新创建的元素

时间:2013-05-01 16:43:08

标签: python append element elementtree

我正在尝试使用Python中的elementtree基于CSV文件中的数据将以下子树添加到xml文件中的元素'Drugs'中:

<Drug>
     <DrugID>1<DrugID>
     <Dose>40</Dose>
     <Unit>mg</Unit>
</Drug>
<Drug>
     <DrugID>3<DrugID>
     <Dose>1</Dose>
     <Unit>g</Unit>
</Drug>

事情是,一旦我创建了Drug元素,我如何引用它来使用append函数? element.append()据我所知,它需要元素直接引用父元素。如果我在添加第二种药物时使用.find(),我可能会参考第一种药物。

我在执行此操作时循环遍历每行CSV,这就是为什么我宁愿逐个元素添加元素而不是将子树附加到元素Drugs。

1 个答案:

答案 0 :(得分:1)

使用SubElement factory添加新元素,使用起来更容易:

from xml.etree import ElementTree as ET

# drugs is a reference to your <Drugs> element

for row in csvreader:
    drug = ET.SubElement(drugs, 'Drug')
    ET.SubElement(drug, 'DrugID').text = row[0]
    ET.SubElement(drug, 'Dose').text = row[1]
    ET.SubElement(drug, 'Unit').text = row[2]

我假设第1列是药物ID,剂量和单位,根据您的CSV文件的要求进行调整。

调用SubElement()创建元素,将其添加到父元素并返回新创建的元素以供进一步处理。