Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用lxml更新xml_Xml_Python 2.7_Xml Parsing_Lxml_Elementtree - Fatal编程技术网

使用lxml更新xml

使用lxml更新xml,xml,python-2.7,xml-parsing,lxml,elementtree,Xml,Python 2.7,Xml Parsing,Lxml,Elementtree,这是我的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:" val

这是我的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>

问题是运行代码时没有错误,但它也不会更新我的xml。我在这里错过了什么???

我相信你离我很近了:

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: -
Current value is: myValue
<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>
替代值:

subtestItem.set("value", 'myValue')
检查以下情况后的状态:

print('Current value is:', subtestItem.get('value'))
输出:

Current value is: -
Current value is: myValue
<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>
为了安全起见,请再次检查:

print(etree.tostring(tree).decode())
输出:

Current value is: -
Current value is: myValue
<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>

好的。我忘了在末尾添加一行:tree.write('my.xml')