0
e-list
タグを見つけて、それらを新しいxmlファイルに書きたいと思います。 XMLは、以下の通りである。ここ特定のタグを見つけて新しいxmlファイルに書き込む
<lsm>
<m-id>v1</m-id>
<name>v1</name>
<communication>bi</communication>
<states>
<s-name>stage1</s-name>
<state>
<s-type>defaultState</s-type>
<s-func>
<p-name>pkgname</p-name>
<f-list>
<f-name>funcNAME</f-name>
<f-arg>{&}</f-arg>
</f-list>
</s-func>
</state>
<lib-path>libpath</lib-path>
<e-list>
<e-name>noEvent</e-name>
<event>
<nss>INC</nss>
<nfs>INC</nfs>
<actions>
<p-name>pkgName</p-name>
<f-list>
<f-name>toF</f-name>
<f-arg></f-arg>
</f-list>
</actions>
</event>
</e-list>
が私のコードで、
import xml.etree.ElementTree as ET
utree = ET.parse(r'C:\v1.xml')
uroot = utree.getroot()
for elist in uroot.iter('e-list'):
print elist.tag # print 3 Tags
for ename in elist.iter('e-name'):
if (ename.text == 'noEvent' or 'Event'):
print "test" # Print "test" 3 times as i have 3 tags
uroot.append(elist) #Commenting this line gives proper output.
utree.write('v2.xml', xml_declaration=True, encoding='UTF-8')
これは無限大に行くと、新しいファイルを作成していません。
あなたの目はENAMEとelist.iter – Vinny
@Vinny間in' 'ミス:おかげでヘッドのアップ。それは私のコードでうまくいきました。私はコピー中に台無しに。コードを更新しました。 – tgcloud
別の質問(https://stackoverflow.com/q/45791960/407651)のように、要素が名前空間にあるという事実は無視しています。 – mzjn