将XML写入文件时某些元素缺少结束标记

时间:2019-02-23 05:26:49

标签: python xml elementtree

我想使用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格式编写,谢谢!

1 个答案:

答案 0 :(得分:1)

正确的标签不会丢失。

<QteRetourneeFourn></QteRetourneeFourn>
(从xml角度来看)

是相同的标记
<QteRetourneeFourn />