我有以下xml:
<?xml version='1.0' encoding='UTF-8'?>
<parserResult>
<ParsedData>
<Signals>
<Signal>
<Name name="asc_epsWarn_mu8"/>
<Aufloesung ist="" soll="2^-0"/>
<Min-wert ist="" soll="0"/>
<Max-wert ist="" soll="1"/>
<ErrorClass error="Signal does not exist in A2L file"/>
<Bewertung evaluation="FAIL"/>
</Signal>
</Signals>
</ParsedData>
</parserResult>
我想搜索信号名称并更新Aufloseung、Min-wert和Max-wert元素。
我从外部源代码获取<Signals>
元素,然后我可以在xml中找到信号
signal_name = asc_epsWarn_mu8
signal = signals.xpath("//Signal/Name[@name='%s']" % signal_name)
现在我如何更新这个信号的Aufloseung,Min-wert和Max-wert元素?我想要如下输出:
<?xml version='1.0' encoding='UTF-8'?>
<parserResult>
<ParsedData>
<Signals>
<Signal>
<Name name="asc_epsWarn_mu8"/>
<Aufloesung ist="23" soll="2^-0"/>
<Min-wert ist="23" soll="0"/>
<Max-wert ist="23" soll="1"/>
<ErrorClass error="Signal does not exist in A2L file"/>
<Bewertung evaluation="FAIL"/>
</Signal>
</Signals>
</ParsedData>
</parserResult>
更新: 我尝试了以下代码,但它没有更新我的值:
min_wert = signal[0].xpath('//Min-wert')
max_wert = signal[0].xpath('//Max-wert')
min_wert[0].set('ist','23')
max_wert[0].set('ist','23')
一旦有了signal元素,就可以执行第二个xpath来获取Min-wert和Max-wert元素:
然后,可以设置属性:
第一个问题是:
您打算选择
Signal
,但实际上选择的是Name
更改为:
另外,在执行此操作时(特别是xpath中的
//
):XPath正在整个树中搜索第一个
Min-wert
和Max-wert
要搜索当前上下文(当前
Signal
),请使用Min-wert
、./Min-wert
或.//Min-wert
。因为Min-wert
是Signal
的直接子代,所以只要Min-wert
就可以了另一种选择是用一个xpath选择“Aufloesung”、“Min-wert”和“Max-wert”
完整示例
XML输入(Input.XML;添加了另一个
Signal
以显示正确的更新)Python
XML输出(转储到控制台)
相关问题 更多 >
编程相关推荐