AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Delphi XML-Header/XSL-Referenz mittels MSXML erzeugen
Thema durchsuchen
Ansicht
Themen-Optionen

XML-Header/XSL-Referenz mittels MSXML erzeugen

Ein Thema von MatthiasR · begonnen am 17. Mär 2008 · letzter Beitrag vom 12. Jun 2008
Antwort Antwort
MatthiasR

Registriert seit: 21. Apr 2005
193 Beiträge
 
#1

XML-Header/XSL-Referenz mittels MSXML erzeugen

  Alt 17. Mär 2008, 13:08
Ich arbeite mit MSXML und erzeuge mit dessen Funktionalität meine eigenen XML-Dokumente. Das klappt auch schön und gut, was ich bisher aber noch nicht hinbekommen habe, ist

1. einen gültigen XML-Header samt xml-Version und encoding-Attribut zu erzeugen und
2. darauffolgend eine XSL-Stylesheet-Referenz einzufügen.

Mein Codebeispiel:

Delphi-Quellcode:
procedure CreateXMLFile(FileName: string);
var
  i: Integer;
  XMLDoc: IXMLDOMDocument2;
  aLine: IXMLDOMElement;
  aElement: IXMLDOMElement;
begin
  XMLDoc := CoDOMDocument40.Create;
  try
    XMLDoc.setProperty('NewParser', True);
    XMLDoc.setProperty('SelectionLanguage', 'XPath');
    XMLDoc.validateOnParse := False;

    // Wurzelknoten erzeugen
    XMLDoc.appendChild(XMLDoc.createElement('tabelle'));

    for i := 1 to (Grid.RowCount - 1) do
    begin
      aLine := XMLDoc.createElement('line');
      XMLDoc.documentElement.appendChild(aLine);

      // Spalte 1
      aElement := XMLDoc.createElement('spalte1');
      aLine.appendChild(aElement);
      aElement.text := Grid.Cells[1, i];

      // Spalte 2
      aElement := XMLDoc.createElement('spalte2');
      aLine.appendChild(aElement);
      aElement.text := Grid.Cells[2, i];

      // Spalte 3
      aElement := XMLDoc.createElement('spalte3');
      aLine.appendChild(aElement);
      aElement.text := Grid.Cells[3, i];
    end;

    XMLDoc.save(FileName);
  finally
    XMLDoc := nil;
  end;
end;
erzeugt folgendes XML-Dokument:
Delphi-Quellcode:
<tabelle>
   <line>
      <spalte1>1</spalte1>
      <spalte2>2</spalte2>
      <spalte3>3</spalte3>
   </line>
   <line>
      <spalte1>1</spalte1>
      <spalte2>2</spalte2>
      <spalte3>3</spalte3>
   </line>
   <line>
      <spalte1>1</spalte1>
      <spalte2>2</spalte2>
      <spalte3>3</spalte3>
   </line>
</tabelle>
Es soll aber so aussehen:
Delphi-Quellcode:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="Stylesheet.xsl">
<tabelle>
   <line>
      <spalte1>1</spalte1>
      <spalte2>2</spalte2>
      <spalte3>3</spalte3>
   </line>
   <line>
      <spalte1>1</spalte1>
      <spalte2>2</spalte2>
      <spalte3>3</spalte3>
   </line>
   <line>
      <spalte1>1</spalte1>
      <spalte2>2</spalte2>
      <spalte3>3</spalte3>
   </line>
</tabelle>
Wie kriege ich das mit MSXML-Bordmitteln hin?
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: XML-Header/XSL-Referenz mittels MSXML erzeugen

  Alt 12. Jun 2008, 17:09
Mit createProcessingInstruction() erzeugt man die Knoten <? ..... ?>
Delphi-Quellcode:
XMLDoc := CoDOMDocument40.Create;
XMLDoc.appendChild(Result.createProcessingInstruction('xml', 'version="1.0" encoding="UTF-8"'));
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:07 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