简体   繁体   English

值未在lxml中的ElementTree中更新

[英]value not getting updated in ElementTree in lxml

I'm using lxml in python. 我在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'

When I print t1 and t2, 当我打印t1和t2时,

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

Correct output is printed. 打印正确的输出。 But it's not getting updated in 'd'. 但是它并没有在'd'中得到更新。

print etree.tostring(d)

input.xml: 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>

How to update it in 'd'? 如何在“ d”中更新它?

d is not related to t1 or t2 in any way. dt1t2毫无关系。 By doing etree.Element('year') or etree.Element('gdppc') you are initializing new independent elements . 通过执行etree.Element('year')etree.Element('gdppc')您正在初始化新的独立元素 Instead, if you want to update existing year or gdppc elements inside d , find them first: 相反,如果要更新d现有的yeargdppc元素,请首先找到它们:

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

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

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM