在lxml

时间:2016-06-21 18:36:43

标签: python xml lxml

我在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)

打印正确的输出。但它没有得到更新,

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>

如何在&#39; d&#39;?

中更新它

1 个答案:

答案 0 :(得分:0)

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

d = etree.parse("input.xml")

t1 = d.find('.//year')
t2 = d.find('.//gdppc')

t1.text = '2016'
t2.text = '123456'