Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi MSXML: Nicht valide Nodes ignorieren (https://www.delphipraxis.net/127745-msxml-nicht-valide-nodes-ignorieren.html)

Mr_G 18. Jan 2009 11:06


MSXML: Nicht valide Nodes ignorieren
 
Hallo zusammen,
hier ist beschrieben wie man mittels MSXML sein XML-Dokument gegen ein XSD-Schema prüfen kann. Gibt es mit MSXML eine Möglichkeit die Teilstrukturen, die nicht den Vorgaben entsprechen herauszufiltern und mit dem Rest weiterzuarbeiten?
Gruß

Mr_G

Mr_G 20. Jan 2009 11:41

Re: MSXML: Nicht valide Nodes ignorieren
 
*push* :duck:

Alaitoc 28. Jan 2009 15:12

Re: MSXML: Nicht valide Nodes ignorieren
 
Hallöle,
nunja vll bastelste dir was aus den Angaben, die ParseError.Code, ParseError.SrcText und so weiter geben.
Genaueres kann ich dir leider zur Zeit auch nicht sagen...versuche mich selbst an dem MSXML und er lädt nicht falls die geladene Datei mit dem XSD Schema nicht 100% übereinstimmt.

Mr_G 28. Jan 2009 17:52

Re: MSXML: Nicht valide Nodes ignorieren
 
Nunja... ich hab auch schon übelegt ob ich das selber bastel aber derzeit glaube ich es ist in meinem Fall fast einfacher nicht mit XSD zu validieren sondern einfach bei Zugriffsfehlern den aktuellen Vorgang abzubrechen.
Sollte es eine einfache Lösung mit MSXML geben: Immer her damit...

Alaitoc 2. Feb 2009 14:57

Re: MSXML: Nicht valide Nodes ignorieren
 
Ich parse die XML-Datei bisher und breche den Vorgang bei einem Fehler ab, dann lade ich sie ohne Überprüfung
in mein Textfeld und markiere mit ParseError.Line die Zeile (benutzte dafür SynEdit) und gebe unten die ParseError.Reason aus...sodass man wenigstens weiß was an der XML-Datei falsch ist.

Nun habe ich allerdings das Problem das wenn ich ein Schema einbinde, der Namespace identisch mit dem aus der Datei sein muss...also...so ganz fehlerfrei funktioniert es bisher nicht...aber ich schau mal weiter...durchwühle schon die ganze Zeit die MSXML 4.0 SDK Dokumentation.

MfG Alaitoc

Mr_G 2. Feb 2009 17:21

Re: MSXML: Nicht valide Nodes ignorieren
 
So eine Ausgabe wäre bei mir eher nicht praktikabel, denn es geht um einen Dienst der die Daten ausliest. Ich denke ich werde das ohne XSD machen und evtl. auftretende Fehler abfangen, sodass ich zumindest die korrekten Nodes alle einlesen kann. Alternativ wäre ganz abzubrechen aber das gefällt mir eigentlich nicht so gut.

Alaitoc 3. Feb 2009 11:40

Re: MSXML: Nicht valide Nodes ignorieren
 
Nunja was vll. möglich wäre...bei DOMDocument60 also bei MSXML 6.0 kann man scheinbar die einzelnen Nodes validieren, gibt da eine Funktion wo man einen Knoten angibt und dann einen ParseError zurück kriegt.

MfG Alaitoc

Mr_G 3. Feb 2009 18:11

Re: MSXML: Nicht valide Nodes ignorieren
 
Das wäre natürlich eine interessante eine Alternative. Danke für den Tipp!

Alaitoc 4. Feb 2009 12:27

Re: MSXML: Nicht valide Nodes ignorieren
 
Nur was mir dabei aufgefallen ist, ich kann ein einmal hinzugefügtes Schema nichtmehr entfernen.
Da erscheint nur eine Exception "Keine Implementierung"...keine Ahnung ob das nur bei mir ist.+

Edit: Habe es mal gelöst, indem ich jedesmal die SchemaCollection neuerstelle...etwas unschön...aber scheinbar entstehen auch keine MemoryLeaks.

MfG Alaitoc

sirius 4. Feb 2009 13:10

Re: MSXML: Nicht valide Nodes ignorieren
 
Zitat:

Zitat von Alaitoc
aber scheinbar entstehen auch keine MemoryLeaks

Wie hast du das festegestellt?


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:58 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz