您好,我正在尝试将元素添加到解析为Element对象的xml文件中。 元素具有相同的标签,并且处于相同的级别。
正如您在输出中看到的,只有一个元素intallation是追加,我希望能够尽可能多地追加。
感谢您的帮助。
这是我要修改的xml文件
'''xml
<mesures>
<mesure>
<refMesure>LEM180895</refMesure>
<conditions interieur="true" perimetreSecurite="false" champLointain="true">
<duree dateDebut="2018-07-24" heureDebut="10:00" dateFin="2018-07-24" heureFin="12:30"/>
<typeEnvironnement>PUBLIC</typeEnvironnement>
<complement></complement>
</conditions>
<localisation changementAdresse="false">
<motifChangementAdresse/>
<position lon="2.3227499999999996" lat="48.8665556" hauteurSol="0"/>
<adresse>
<voie></voie>
<lieudit></lieudit>
<complement>string</complement>
<codePostal>00000</codePostal>
<commune>Commune</commune>
</adresse>
</localisation>
<installationsVisibles>
</installationsVisibles>
<resultat respectNiveauReference="false">
<valeurMoyenne>0</valeurMoyenne>
<!--You have a CHOICE of the next 3 items at this level-->
<!--Optional:-->
</resultat>
</mesure>
</mesures>
'''
这是我使用的代码
from lxml import etree
from lxml import objectify
fileobject = open('C:/Users/gustu/Dropbox/RATP2/uploadANFR/ANFRAutoXML/3 - Mise à jour schéma echange ANFR/Schema_Echanges_MCR/anfr_laboratoire/aideInternet/extract.xml','r')
tree = objectify.parse(fileobject)
root=tree.getroot()
# xml='''
# <installationVisibles>
# </installationVisibles>
# '''
# installationVisibles = objectify.fromstring(xml)
installation=objectify.fromstring("<installation hauteur=\"8\" distance=\"9\"><type></type></installation>")
root.mesure.installationsVisibles.insert(0,installation)
root.mesure.installationsVisibles.insert(1,installation)
print(etree.tostring(root))
<mesures><mesure><refMesure>LEM180895</refMesure><conditions
interieur="true" perimetreSecurite="false" champLointain="true"><duree dateDebut="2018-07-24" heureDebut="10:00" dateFin="2018-07-24" heureFin="12:30"/><typeEnvironnement>PUBLIC</typeEnvironnement><complement/></conditions><localisation changementAdresse="false"><motifChangementAdresse/><position lon="2.3227499999999996" lat="48.8665556" hauteurSol="0"/><adresse><voie/><lieudit/><complement>string</complement><codePostal>00000</codePostal><commune>Commune</commune></adresse></localisation><installationsVisibles>\n\n <installation hauteur="8" distance="9"><type/></installation></installationsVisibles><resultat respectNiveauReference="false"><valeurMoyenne>0</valeurMoyenne><!--You have a CHOICE of the next 3 items at this level--><!--Optional:--></resultat></mesure></mesures>
输出
<mesures>
<mesure>
<refMesure>LEM180895</refMesure>
<conditions interieur="true" perimetreSecurite="false" champLointain="true">
<duree dateDebut="2018-07-24" heureDebut="10:00" dateFin="2018-07-24" heureFin="12:30"/>
<typeEnvironnement>PUBLIC
</typeEnvironnement>
<complement/>
</conditions>
<localisation changementAdresse="false">
<motifChangementAdresse/>
<position lon="2.3227499999999996" lat="48.8665556" hauteurSol="0"/>
<adresse>
<voie/>
<lieudit/>
<complement>string</complement>
<codePostal>00000</codePostal>
<commune>Commune</commune>
</adresse>
</localisation>
<installationsVisibles>\n\n
<installation hauteur="8" distance="9">
<type/>
</installation>
</installationsVisibles>
<resultat respectNiveauReference="false">
<valeurMoyenne>0</valeurMoyenne> <!--You have a CHOICE of the next 3 items at this level--> <!--Optional:--></resultat>
</mesure>
</mesures>
答案 0 :(得分:0)
请添加
from copy import copy
并替换
root.mesure.installationsVisibles.insert(0, installation)
root.mesure.installationsVisibles.insert(1, installation)
使用
root.mesure.installationsVisibles.insert(0, copy(installation))
root.mesure.installationsVisibles.insert(1, copy(installation))
然后它应该工作。