Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi XML laden,bearbeiten,speichern,validieren (MSXML 4.0) (https://www.delphipraxis.net/127650-xml-laden-bearbeiten-speichern-validieren-msxml-4-0-a.html)

Alaitoc 16. Jan 2009 14:39


XML laden,bearbeiten,speichern,validieren (MSXML 4.0)
 
Tach zusammen,

ich wollte mal kurz fragen ob mir einer die Grundlegenden Sachen für den MSXML 4.0 Parser posten kann.
Einzelne Sachen hab ich zwar schon gefunden, aber wäre nochmal praktisch wenn mir jemand alles auflisten kann.
Besonders zum Thema "Validieren" hab ich zu Delphi und dem MSXML 4.0 bisher nichts sinnvolles gefunden.

Schonmal vielen Dank :)

PS: Ist es auch irgendwie möglich den XML Code wenn man ihn geladen hat ohne große Probleme einzufärben? Je nach Elementen? Oder müsste man sich da was eigenes schreiben?

himitsu 16. Jan 2009 15:06

Re: XML laden,bearbeiten,speichern,validieren (MSXML 4.0)
 
bezüglich Validieren: schau mal ins World Wide Web Consortium (W3C)

Meflin 16. Jan 2009 15:10

Re: XML laden,bearbeiten,speichern,validieren (MSXML 4.0)
 
Zitat:

Zitat von Alaitoc
PS: Ist es auch irgendwie möglich den XML Code wenn man ihn geladen hat ohne große Probleme einzufärben? Je nach Elementen? Oder müsste man sich da was eigenes schreiben?

Du könntest SynEdit verwenden, das Syntax-Highlighting unterstützt. Ansonsten: nein.

Alaitoc 19. Jan 2009 13:45

Re: XML laden,bearbeiten,speichern,validieren (MSXML 4.0)
 
Schonmal Danke für die Antworten, jedoch was ist nun mit Speichern,Laden und so weiter? :)

MfG Alaitoc

himitsu 19. Jan 2009 16:10

Re: XML laden,bearbeiten,speichern,validieren (MSXML 4.0)
 
am Einfachsten so...
Delphi-Quellcode:
Var XML: TXMLDocument;
  Node: IXMLNode;

// laden
XML := TXMLDocument.Create(Self);
Try
  XML.LoadFromStream(Stream);
  XML.Active := True; // bei active ... ich glaub das war hier eventuell nimmer
                        // nötig *überleg* ... aber schaden tut's bbestrimmt auch nich
  XML.Options := [doNodeAutoCreate, doNodeAutoIndent, doAttrNull];

  //Node := XML.DocumentElement. ...
  ...

Finally
  XML.Free;
End;


// speichern
XML := TXMLDocument.Create(Self);
Try
  XML.Active    := True;
  XML.Version   := '1.0';
  XML.StandAlone := 'yes';
  XML.Encoding  := 'UTF-8';
  XML.Options   := [doNodeAutoCreate, doNodeAutoIndent, doAttrNull];
  XML.AddChild('xml');

  //Node := XML.DocumentElement. ...
  ...

  XML.SaveToStream(Stream);
Finally
  XML.Free;
End;
die XML.Options sind so gewählt, daß der XML-Text schön formatiert ist (doNodeAutoIndent) und daß es keine Exceptions beim Zugriff auf nicht existierende Nodes/Attributes gibt (doNodeAutoCreate+doAttrNull)

Alaitoc 28. Jan 2009 14:52

Re: XML laden,bearbeiten,speichern,validieren (MSXML 4.0)
 
Hab ein kleines Problem, eigentlich läuft nun der XML Parser soweit...jedoch sobald irgendwas an der XML Datei nicht funktioniert kann ich sie nicht laden...also wenn sie irgendeinen kleinen Fehler an der Struktur hat oder wenn sie mit dem geladenen Schema nicht übereinstimmt...

Den Ladevorgang rufe ich damit auf:

Delphi-Quellcode:
  XMLDocParser.Load(LoadFile.Dialog.FileName);
  if XMLDocParser.ParseError.ErrorCode=0 then //Falls kein Fehler vorhanden ist
  begin
    txtXMLEdit.Text:=XMLDocParser.XML;
  end
  else
  begin
  txtXMLEdit.Text:=XMLDocParser.XML;
    txtxmlerrorcode.Lines.Add('Die geladene Datei entspricht nicht dem XML-Standard');
    txtxmlerrorcode.Lines.Add(XMLDocParser.ParseError.Reason);
    ShowMessage('Die geladene Datei entspricht nicht dem XML-Standard');
    ShowMessage(XMLDocParser.ParseError.Reason);
  end;
Also wie kann ich das ganze hinkriegen :?:

Mfg Alaitoc

Alaitoc 30. Jan 2009 16:01

Re: XML laden,bearbeiten,speichern,validieren (MSXML 4.0)
 
Habs hinbekommen indem ich zweimal geladen habe, falls ein Fehler erkannt wurde...und ich beim
zweiten Mal dann ValidateOnParse deaktiviert habe.
Etwas unschön, aber funktioniert.

MfG Alaitoc


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:16 Uhr.

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