我正在尝试使用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。
答案 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()
创建元素,将其添加到父元素并返回新创建的元素以供进一步处理。