Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi XML darstellen (https://www.delphipraxis.net/11260-xml-darstellen.html)

woody 3. Nov 2003 08:08


XML darstellen
 
hi,

möchte eine XML-datei, welche als datenbank genutzt wird, gut leserlich darstellen. hab zuerst xsl probiert, was auch sehr gut fuktioniert hat. jedoch ändert sich die xml datei öfters und somit verschwindet auch der interne pfad zur xsl-datei. gibt es noch andere möglichkeiten, ohne das man etwas in die XML-datei schreiben muß?


grüße
woody

MathiasSimmack 4. Nov 2003 08:05

Re: XML darstellen
 
Zitat:

Zitat von woody
jedoch ändert sich die xml datei öfters und somit verschwindet auch der interne pfad zur xsl-datei.

Wie das? Eigentlich gehört die Angabe des XSL-Stylesheets doch mit zum (ich nenn´s mal so) Header. Und da man doch normalerweise nur den Content ändert, müsste man bei Änderungen der Tags usw. bestenfalls die XSL-Datei anpassen.
Man kann so eine Angabe auch später einfügen, wenn die XML-Datei bereits fertig ist. Beispiel mit dem MS-XML-Parser:
Delphi-Quellcode:
// die XML-Datei laden
{ ... }


fFound := false;
nl    := xmldoc.Get_childNodes;
for i := 0 to nl.length - 1 do
  // es gibt bereits einen Eintrag
  if(nl.item[i].Get_nodeType = NODE_PROCESSING_INSTRUCTION) and
    (nl.item[i].Get_nodeName = 'xml-stylesheet') then
  begin
    // in dem Fall den Wert ignorieren und stattdessen
    // die gewünschte XSL-Datei eintragen
    nl.item[i].text := 'href="../../MO.xsl" type="text/xsl"';
    fFound         := true;
    break;
  end;

// ansonsten komplett neu erstellen, ...
if(not fFound) then begin
  node := xmldoc.documentElement;
  pi  := xmldoc.createProcessingInstruction('xml-stylesheet',
    'href="../../MO.xsl" type="text/xsl"');

// und VOR dem ersten Knoten einhängen
  xmldoc.insertBefore(pi,node);
end;

// XML-Datei speichern, und fertig!
{ ... }
"pi" ist vom Typ "IXMLDOMProcessingInstruction", "node" ist ein "IXMLDOMNode", "fFound" ist eine Bool-Variable.

Zitat:

gibt es noch andere möglichkeiten, ohne das man etwas in die XML-datei schreiben muß?
Selbst parsen. Dazu bräuchtest du ein Minimal-Programm mit einem TWebBrowser bspw. Dann lädtst du die XML-Datei und sorgst im Programm dafür, dass die Tags richtig (oder wie gewünscht) dargestellt werden.

Gruß.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:10 Uhr.

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