我想使用xml.etree.ElmentTree来解析xml来更改值,然后写入新文件,但是如果标记为None且文本值为空,则在写入新xml后,正确的标记将丢失: / p>
以下是原始内容:
<LignesReception>
<CodeBarre>3607171442485</CodeBarre>
<QteRecue>8</QteRecue>
<QteRecue1Choix>8</QteRecue1Choix>
<QteRecue2Choix>0</QteRecue2Choix>
<DateLivraisonPrevue>14022019</DateLivraisonPrevue>
<QteRetourneeFourn></QteRetourneeFourn>
<CodeCauseRetourFourn></CodeCauseRetourFourn>
<PxAchatInitial></PxAchatInitial>
<PxAchatModifie></PxAchatModifie>
<QteAnnoncee>8</QteAnnoncee>
<QteEnEchantillon></QteEnEchantillon>
<QteAttDecision>0</QteAttDecision>
</LignesReception>
打击是我写入新的xml文件后的内容:
<LignesReception>
<CodeBarre>3607171442485</CodeBarre>
<QteRecue>8</QteRecue>
<QteRecue1Choix>8</QteRecue1Choix>
<QteRecue2Choix>0</QteRecue2Choix>
<DateLivraisonPrevue>27022019</DateLivraisonPrevue>
<QteRetourneeFourn />
<CodeCauseRetourFourn />
<PxAchatInitial />
<PxAchatModifie />
<QteAnnoncee>8</QteAnnoncee>
<QteEnEchantillon />
<QteAttDecision>0</QteAttDecision>
</LignesReception>
这是我的剧本:
import os
from xml.etree import ElementTree as ET
for file in os.listdir("."):
if file.endswith("xml"):
tree = ET.parse(file)
for i in tree.iter():
if i.text is None:
i.text = ""
if i.tag == "DateLivraisonPrevue":
i.text = "27022019"
tree.write("New xml.xml",encoding="UTF-8",xml_declaration=True)
任何人都可以帮助解决这个问题,以xml格式编写,谢谢!
答案 0 :(得分:1)
正确的标签不会丢失。
<QteRetourneeFourn></QteRetourneeFourn>
(从xml角度来看)与
是相同的标记<QteRetourneeFourn />