Ergänzung ermittlung Objektbezeichnung zum Fehler

main
spertl 24 hours ago
parent a2e96559cf
commit 7beb56b15f

@ -1,4 +1,41 @@
from lxml import etree from lxml import etree
import re
xml_path = "C:/temp-GIS/2026-04-08_export_new2.xml"
xsd_path = 'C:/temp-GIS/_isy/2017/1_XML-Schema/1707-metadaten.xsd'
try:
with open(dateipfad, 'r', encoding='utf-8') as f:
zeilen = f.readlines()
except FileNotFoundError:
return "Datei nicht gefunden."
def finde_letzte_bezeichnung(zeilen, ziel_zeile):
"""
Sucht rückwärts ab ziel_zeile nach dem Tag <objektbezeichnung>.
"""
# Überprüfung der Zeilennummer
if ziel_zeile > len(zeilen):
return "Fehler: Zeilennummer existiert nicht."
# Suche rückwärts von der Zielzeile (Index = Zeile - 1)
for i in range(ziel_zeile - 1, -1, -1):
aktuelle_zeile = zeilen[i]
# Regex sucht nach dem Inhalt zwischen den Tags
treffer = re.search(r'<objektbezeichnung>(.*?)</objektbezeichnung>', aktuelle_zeile)
if treffer:
return treffer.group(1).strip()
# Falls der Tag über mehrere Zeilen geht oder nur der Start-Tag da ist
if '<objektbezeichnung>' in aktuelle_zeile:
# Extrahiere Text nach dem Start-Tag in dieser Zeile
text = aktuelle_zeile.split('<objektbezeichnung>')[-1].strip()
return text if text else "Tag gefunden, Inhalt leer oder mehrzeilig."
return "Keine <objektbezeichnung> oberhalb dieser Zeile gefunden."
# XML-Datei laden # XML-Datei laden
with open("C:/temp-GIS/2026-04-08_export_new2.xml", "rb") as xml_file: with open("C:/temp-GIS/2026-04-08_export_new2.xml", "rb") as xml_file:
@ -20,7 +57,8 @@ else:
count = 0 count = 0
for error in xmlschema.error_log: for error in xmlschema.error_log:
log_file.write(f"Zeile: {error.line}, Spalte: {error.column}; ") log_file.write(f"Zeile: {error.line}, Spalte: {error.column}; ")
log_file.write(f"Fehler: {error.message}\n") ergebnis = finde_letzte_bezeichnung(zeilen, error.line)
log_file.write(f"{ergebnis};Fehler: {error.message}\n")
count = count + 1 count = count + 1
print("Anzahl Fehler: ", count) print("Anzahl Fehler: ", count)

Loading…
Cancel
Save