Ergänzung ermittlung Objektbezeichnung zum Fehler
parent
a2e96559cf
commit
7beb56b15f
@ -1,26 +1,64 @@
|
|||||||
from lxml import etree
|
from lxml import etree
|
||||||
|
import re
|
||||||
# XML-Datei laden
|
|
||||||
with open("C:/temp-GIS/2026-04-08_export_new2.xml", "rb") as xml_file:
|
xml_path = "C:/temp-GIS/2026-04-08_export_new2.xml"
|
||||||
xml_doc = etree.parse(xml_file)
|
xsd_path = 'C:/temp-GIS/_isy/2017/1_XML-Schema/1707-metadaten.xsd'
|
||||||
|
|
||||||
# XSD-Datei laden
|
|
||||||
with open('C:/temp-GIS/_isy/2017/1_XML-Schema/1707-metadaten.xsd', "rb") as xsd_file:
|
try:
|
||||||
xsd_doc = etree.parse(xsd_file)
|
with open(dateipfad, 'r', encoding='utf-8') as f:
|
||||||
|
zeilen = f.readlines()
|
||||||
# Schema erstellen
|
except FileNotFoundError:
|
||||||
xmlschema = etree.XMLSchema(xsd_doc)
|
return "Datei nicht gefunden."
|
||||||
|
|
||||||
# Validieren
|
def finde_letzte_bezeichnung(zeilen, ziel_zeile):
|
||||||
if xmlschema.validate(xml_doc):
|
"""
|
||||||
print("XML ist gültig ✅")
|
Sucht rückwärts ab ziel_zeile nach dem Tag <objektbezeichnung>.
|
||||||
else:
|
"""
|
||||||
print("XML ist NICHT gültig ❌")
|
|
||||||
with open("C:/temp-GIS/fehler.log", "w", encoding="utf-8") as log_file:
|
# Überprüfung der Zeilennummer
|
||||||
count = 0
|
if ziel_zeile > len(zeilen):
|
||||||
for error in xmlschema.error_log:
|
return "Fehler: Zeilennummer existiert nicht."
|
||||||
log_file.write(f"Zeile: {error.line}, Spalte: {error.column}; ")
|
|
||||||
log_file.write(f"Fehler: {error.message}\n")
|
# Suche rückwärts von der Zielzeile (Index = Zeile - 1)
|
||||||
count = count + 1
|
for i in range(ziel_zeile - 1, -1, -1):
|
||||||
print("Anzahl Fehler: ", count)
|
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
|
||||||
|
with open("C:/temp-GIS/2026-04-08_export_new2.xml", "rb") as xml_file:
|
||||||
|
xml_doc = etree.parse(xml_file)
|
||||||
|
|
||||||
|
# XSD-Datei laden
|
||||||
|
with open('C:/temp-GIS/_isy/2017/1_XML-Schema/1707-metadaten.xsd', "rb") as xsd_file:
|
||||||
|
xsd_doc = etree.parse(xsd_file)
|
||||||
|
|
||||||
|
# Schema erstellen
|
||||||
|
xmlschema = etree.XMLSchema(xsd_doc)
|
||||||
|
|
||||||
|
# Validieren
|
||||||
|
if xmlschema.validate(xml_doc):
|
||||||
|
print("XML ist gültig ✅")
|
||||||
|
else:
|
||||||
|
print("XML ist NICHT gültig ❌")
|
||||||
|
with open("C:/temp-GIS/fehler.log", "w", encoding="utf-8") as log_file:
|
||||||
|
count = 0
|
||||||
|
for error in xmlschema.error_log:
|
||||||
|
log_file.write(f"Zeile: {error.line}, Spalte: {error.column}; ")
|
||||||
|
ergebnis = finde_letzte_bezeichnung(zeilen, error.line)
|
||||||
|
log_file.write(f"{ergebnis};Fehler: {error.message}\n")
|
||||||
|
count = count + 1
|
||||||
|
print("Anzahl Fehler: ", count)
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue