Delphi-PRAXiS
Seite 2 von 3     12 3      

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)

Alaitoc 4. Feb 2009 14:16

Re: MSXML: Nicht valide Nodes ignorieren
 
Ich hab eine Unit die jeweils die MemoryLeaks (glaube MemCheck wars) ausgibt, wenn ich das Programm beende und dann hab ich nochmal ein wenig eine Schleife durchlaufen lassen.

Btw: Jemand ne Idee wie ich die Präfixe der Namespaces herausfinde? Also xmlns:xsi="" ?

MfG Alaitoc

sirius 4. Feb 2009 14:52

Re: MSXML: Nicht valide Nodes ignorieren
 
Zitat:

Zitat von Alaitoc
Ich hab eine Unit die jeweils die MemoryLeaks (glaube http://v.mahon.free.fr/pro/freeware/memcheck/ wars) ausgibt, wenn ich das Programm beende und dann hab ich nochmal ein wenig eine Schleife durchlaufen lassen.

Ich fragte nur, weil MemLeaks bei COM-Objekten können mit den handelsüblichen Memorychecks zu Delhpi nicht gefunden werden.

Alaitoc 4. Feb 2009 15:08

Re: MSXML: Nicht valide Nodes ignorieren
 
Hmhm gute Frage, die Frage ist wie sollte ich es sonst lösen?
Scheinbar fehlt die Remove Methode in der SchemaCollection ab MSXML 6.

Btw vll noch einige interessante Einstellungen für den Parser: MSXML Parser Einstellungen

Edit: Achja und naja sonst freigeben kann ich die SchemaCollection auch nicht mit FreeandNil(), also denke ich das dies nicht nötig ist...naja ich hoffe es.

sirius 5. Feb 2009 09:41

Re: MSXML: Nicht valide Nodes ignorieren
 
Zitat:

Zitat von Alaitoc
Hmhm gute Frage, die Frage ist wie sollte ich es sonst lösen?
Scheinbar fehlt die Remove Methode in der SchemaCollection ab MSXML 6.

Keine Ahnung. Ich wollte nur kurz warnen. Es kann trotzdem sein, dass es so funktioniert. Ich habe mich mit der 6er Version noch nie auseinandergesetzt.

Alaitoc 6. Feb 2009 09:30

Re: MSXML: Nicht valide Nodes ignorieren
 
Hm aber vll. mit der 5er? ^^
Ich versuche MultipleErrorMessage zu nutzen, jedoch habe ich ein Problem zwischen dem IXMLDOMParseError und IXMLDOMParseError2...sind halt zwei unterschiedliche Datentypen und naja ne Idee?

Edit:Also will beim Validieren halt dank der MultipleErrorMessage Einstellung alle Fehler auswerten...nur keine Ahnung ob das bei Delphi überhaupt geht.


Schonmal Danke

Mr_G 6. Feb 2009 14:29

Re: MSXML: Nicht valide Nodes ignorieren
 
Ich habs einfach mal ausprobiert:
Delphi-Quellcode:
procedure TForm.FormCreate(Sender: TObject);
var tmp: IXMLDOMDocument2;
    lst: IXMLDOMParseErrorCollection;
    i: Integer;
begin
  tmp := CoDOMDocument60.Create;
  tmp.setProperty('MultipleErrorMessages', true);
  tmp.loadXML('<root><a>[/b]</root>');

  Memo.Clear;
  lst := (tmp.parseError as IXMLDOMParseError2).allErrors;
  for i := 0 to lst.length - 1 do
  begin
    Memo.Lines.Add(lst.item[i].reason);
  end;
end;
Vielleicht hilft das weiter...

Alaitoc 6. Feb 2009 14:49

Re: MSXML: Nicht valide Nodes ignorieren
 
Naja das Problem ist, er speichert da nun nur einen Fehler hinein...auch wenn mehrere vorhanden sind :/
Oder...mache ich noch was falsch? *am Kopf kratz*

MfG Alaitoc

Mr_G 6. Feb 2009 17:45

Re: MSXML: Nicht valide Nodes ignorieren
 
Kannst du mal deine Routine, dein Test-Schema und deine Test-XML-Datei hochladen. Eigentlich sollte das funktionieren.

Alaitoc 9. Feb 2009 07:27

Re: MSXML: Nicht valide Nodes ignorieren
 
Naja ich hab einfach mal ne Form und ne Memo erstellt, dann deinen Code kopiert und dann halt noch einen Fehler eingebaut...wird trotzdem nur der Erste angezeigt.

MfG Alaitoc

Alaitoc 9. Feb 2009 09:50

Re: MSXML: Nicht valide Nodes ignorieren
 
Hm könnte es daran liegen, das ich Delphi 7 benutze? :gruebel:

Edit: Hrm Delphi 2009 klappt es auch nicht...irgendwie bin ich langsam am verzweifeln...


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:31 Uhr.
Seite 2 von 3     12 3      

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