1.) Если вы посмотрите на следующие теги и пробелы в моем xml-выводе, вы заметите, что пробелы не так корректны, причина кода в 2.)
<SD-ID-Gesamt>
& </SD-ID-Gesamt>
<Lage>
& </Lage>
<Parameter>
& </Parameter>
Токовый выход:
<SD-ID-Gesart>
<SD-ID-Code>
<SD-ID>DD-RE-1.0G-10</SD-ID>
<Lage>
<XP>14.84</XP>
<YP>73.19</YP>
<ZP>7.92</ZP>
<WKS>95.32</WKS>
</Lage>
<Parameter>
<Form>Rectangle</Form>
<Art>Deckendurchbruch/Art>
<Gewerk>-HT-SAN-DURCHBRUCH</Gewerk>
<Ebene>1.OG OKFF +4,50 m</Ebene>
<Breite>1,800000</Breite>
<Höhe>0,500000</Höhe>
<Tiefe>0,450000</Tiefe>
<Status_Neu>0</Status_Neu>
<Status_Geändert>1</Status_Geändert>
</Parameter>
<SD-ID-Code>
2.) Я звоню indent()
, чтобы напечатать мои xml-файлы.Это работает почти так, как хотелось бы, за исключением одной маленькой ошибки в коде, который вы видите ниже.Ошибка, которую вы можете увидеть в xml-выводе на картинке выше.
def indent(elem, level=0):
i = "\n" + level*" "
if len(elem):
if not elem.text or not elem.text.strip():
elem.text = i + ""
if not elem.tail or not elem.tail.strip():
elem.tail = i
for elem in elem:
indent(elem, level+1)
if not elem.tail or not elem.tail.strip():
elem.tail = i
else:
if level and (not elem.tail or not elem.tail.strip()):
elem.tail = i
3.) С кодом, который вы видите далее, я создаю ElementTree, когда он прошел через indent()
.
indent(sd)
tree = ET.ElementTree(sd)
tree.write(open(pfad + '\\'+ datei_name + '.xml', "w"), encoding='utf-8',
xml_declaration=True, method='xml')
Мне нужно отредактировать определение функции отступа indent()
, чтобы получить правильные пробелы.В этом случае я действительно не знаю, как вернуть пробелы, когда тег равен.Я был бы очень счастлив, если бы вы могли помочь мне исправить это.