这是我的xml的一部分:
<subtests id="39845890" name="Signallexikon:" subTestValuation="INFO" timestamp="2019-05-10T14:51:31.207+02:00" type="NewSubtest">
<subTestItem label="label:" value="Signallexikon:"/>
<subTestItem label="actual-value:" value="-"/>
<subTestItem label="rated-value:" value=" "/>
<subTestItem label="dimension:" value="-"/>
<subTestItem label="comment:" value=" "/>
</subtests>
我想用label="actual-value:"
更新value= "myValue"
。
首先,我搜索了subtests
标签,然后更新了其子元素subTestItem
:
tree = etree.parse('my.xml')
subtest = tree.xpath("//subtests[@name='Signallexikon:']")[0]
subtestItem = subtest.xpath(".//subTestItem[@label='actual-value:']")[0]
subtestItem.set("value", 'myValue')
问题是运行代码时没有错误,但它也不会更新我的xml。我在这里想念什么?
答案 0 :(得分:1)
我相信您非常接近
data = """[your xml above]"""
import lxml.etree as etree
tree = etree.fromstring(data)
subtestItem = tree.find(".//subTestItem[@label='actual-value:']")
之前的状态:
print( 'Current value is:', subtestItem.get('value'))
输出:
Current value is: -
替换值:
subtestItem.set("value", 'myValue')
之后检查状态
print('Current value is:', subtestItem.get('value'))
输出:
Current value is: myValue
为了安全起见,请再次检查:
print(etree.tostring(tree).decode())
输出:
<subtests id="39845890" name="Signallexikon:" subTestValuation="INFO" timestamp="2019-05-10T14:51:31.207+02:00" type="NewSubtest">
<subTestItem label="label:" value="Signallexikon:"/>
<subTestItem label="actual-value:" value="myValue"/>
<subTestItem label="rated-value:" value=" "/>
<subTestItem label="dimension:" value="-"/>
<subTestItem label="comment:" value=" "/>
</subtests>