我正在使用minidom解析xml。我要实现的是找到具有特定属性的所有标签,然后在其下面附加一个具有不同属性值的新标签。对于例如
让我们说标签是:
stream.parallelize()
我找到了所有具有属性值<PROPVAL ISFORMULA="N" LOCALIZABLE="false" NAME="EntDataRegion" VALUE="XYZ"/>
的标签。现在,我想在其下方附加一个标签。
NAME = "EntReg"
标记名称和值将是静态的,即我想在<PROPVAL ISFORMULA="N" LOCALIZABLE="false" NAME="EntRoutingDataSelected" VALUE="yes"/>
属性PROPVAL
具有值NAME
的地方附加相同的标记。
到目前为止,我已经写了这篇文章,发现了所有EntDataRegion
标签:
PROPVAL
修改
XML结构如下:
xmldoc = minidom.parse('test.xml')
prop_val = xmldoc.getElementsByTagName('PROPVAL')
for i in prop_val:
if i.attributes['NAME'].value == 'PB:EntDataRegion':
print(i.attributes['VALUE'].value)
该xml具有两个标签<?xml version="1.0" encoding="UTF-8"?>
<MOD version="3">
<CLASS>
<CLASS COMMENT="" DEFAULTPRIORITY="50">
<PROPVAL ISFORMULA="N" LOCALIZABLE="false" NAME="EntDataRegion" VALUE="XYZ"/>
<RULE LOCALIZABLE="false"/>
<ITEM>
<PROPVAL ISFORMULA="N" LOCALIZABLE="false" NAME="HIDE" VALUE="XYZ"/>
</ITEM>
</CLASS>
<CLASS COMMENT="" DEFAULTPRIORITY="50">
<PROPVAL ISFORMULA="N" LOCALIZABLE="false" NAME="EntDataRegion" VALUE="XYZ"/>
<RULE LOCALIZABLE="false"/>
<ITEM>
<PROPVAL ISFORMULA="N" LOCALIZABLE="false" NAME="HIDE" VALUE="XYZ"/>
</ITEM>
</CLASS>
</CLASS>
<CLASS>
<ITEM>
<PROPVAL ISFORMULA="N" LOCALIZABLE="false" NAME="EntDataRegion" VALUE="XYZ"/>
<PROPVAL ISFORMULA="N" LOCALIZABLE="false" NAME="EntRoutingDataSelected" VALUE="yes"/>
</ITEM>
</CLASS>
</MOD>
和CLASS
。 class标签可以将item标签作为child标签。但是在将项作为子标记之前,它将始终具有一堆<ITEM>
标记。
想法是插入
<PROPVAL>
之前
<PROPVAL ISFORMULA="N" LOCALIZABLE="false" NAME="EntRoutingDataSelected" VALUE="yes"/>
问题是我可以插入上面的标签。具有item标签的class标签也具有此属性。而我只希望<PROPVAL ISFORMULA="N" LOCALIZABLE="false" NAME="EntDataRegion" VALUE="XYZ"/>
标记具有ITEM
这是我尝试过的:
<PROPVAL NAME="EntDataRegion">