Thema: Delphi XML darstellen

Einzelnen Beitrag anzeigen

MathiasSimmack
(Gast)

n/a Beiträge
 
#2

Re: XML darstellen

  Alt 4. Nov 2003, 08:05
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ß.
  Mit Zitat antworten Zitat