值未在LXML中的ElementTree中更新



我正在使用python中的lxml。

from lxml import etree
d = etree.parse("input.xml")
t1 = etree.Element('year')
t2 = etree.Element('gdppc')
t1.text = '2016'
t2.text = '123456'

当我打印T1和T2时,

print etree.tostring(t1)
print etree.tostring(t2)

打印正确的输出。但是它没有在" D"中更新。

print etree.tostring(d)

input.xml:

<?xml version="1.0"?>
<data>
   <country name="Liechtenstein">
        <rank updated="yes">2</rank>
        <year>2008</year>
        <gdppc>141100</gdppc>
        <neighbor name="Austria" direction="E"/>
        <neighbor name="Switzerland" direction="W"/>
    </country>        
</data>

如何在" D"中更新它?

d以任何方式与 t1t2无关。通过执行etree.Element('year')etree.Element('gdppc'),您是初始化新的独立元素。相反,如果要更新d中的yeargdppc元素,请首先找到它们:

d = etree.parse("input.xml")
t1 = d.find('.//year')
t2 = d.find('.//gdppc')
t1.text = '2016'
t2.text = '123456'

最新更新