AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

XML Probleme Datei erstellen

Ein Thema von MoreThanWords · begonnen am 2. Apr 2003 · letzter Beitrag vom 4. Apr 2003
Antwort Antwort
MoreThanWords

Registriert seit: 2. Apr 2003
3 Beiträge
 
#1

XML Probleme Datei erstellen

  Alt 2. Apr 2003, 11:29
Hallo

Sorry, dass ich schon wieder mit diesem Thema komme aber irgendwie schaffe ich es nicht eine XML Datei zu erstellen.

Code:
procedure TForm2.Button3Click(Sender: TObject);
var Sub,
    Node : IXMLDOMNode;
    DomDoc: TDOMDocument;
begin
   DomDoc:= TDOMDocument.Create(self);
   sub:= DOMDocument1.createElement('MeinNode');
   sub.Text:= 'Hallo Welt';

   node:= DomDoc.documentElement; //DomDoc.documentElement ist nil???
   node.appendChild(sub); //hier bekomme ich Zugriffsverletzung
   ShowMessage(DOMDoc.documentElement.xml);

   //...Speichern mit DomDoc.Save.....
end;
Diesen Code hab ich aus einem Beitrag aus diesem Forum aber bei mir scheint er nicht richtig zu funktionieren. An den Versionen von MSXML kann es nicht liegen ich hab (2,3,4) bereits ausprobiert.

Kann mir jemand helfen.

Danke
  Mit Zitat antworten Zitat
svehei

Registriert seit: 10. Mär 2003
Ort: Bretten
54 Beiträge
 
Delphi 7 Professional
 
#2
  Alt 2. Apr 2003, 12:04
ich lese folgendermassen aus einer xml-datei

Delphi-Quellcode:
procedure XXX.LoadFromHRXMLFile(FileName: String; AOwner: TComponent);
var
  FXMLDocument : TXMLDocument;
  lNode : IXMLNode;
  lNodeList : IXMLNodeList;
  i : integer;
begin
  FXMLDocument := TXMLDocument.Create(AOwner);
  FXMLDocument.LoadFromFile(FileName);
  FXMLDocument.Active := True;
  //Root Element setzen
  lNode := FXMLDocument.DocumentElement;
  lNodeList := lNode.ChildNodes;
  //alle Nodes durchgehen
  for i := 0 to lNodeList.Count -1 do
  begin
    showmessage(lNodeList.Nodes[i].NodeName+'='+lNodeList.Nodes[i].text);
  end;
und das funzt wunderbar

da es sich um xml-dateien handelt, ist das speichern ist im prinzip ganz easy. du kannst das wie bei normalen textfiles machen

Delphi-Quellcode:
  AssignFile(f, FileName);
{$I-}
  rewrite(f);
{$I+}
  if IOResult = 0 then
  begin
    writeln(f, '<?xml version="1.0" encoding="UTF-8"?>');
    writeln(f, '<ROOTTAG>');
    writeln(f, '<SUBTAG>'+FValue+'</SUBTAG>');

...
die einzelnen tags kannst du natuerlich baummaessig aus deinem zuvor gelesenen IXMLNode ermitteln und schreiben

ich hoffe das hilft dir weiter
  Mit Zitat antworten Zitat
MoreThanWords

Registriert seit: 2. Apr 2003
3 Beiträge
 
#3
  Alt 2. Apr 2003, 12:21
Vielen Dank erstmal für die fixe Antwort

Leider funktioniert das ganze bei mir nicht, da ich diese ganzen Typen (TXMLDocument...) nicht habe kann es sein, dass diese ertst bei Delphi 6 enthalten sind? Ich hab leider Delphi 5 und mir deswegen die Typbibliothek von Microsoft (MSXML4) importiert.

Ich wollte auch eine ganz neue Datei schreiben also soll bei mir kein LoadFromFile() stattfinden.

Grüße
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#4
  Alt 3. Apr 2003, 18:30
Zitat von MoreThanWords:
Sorry, dass ich schon wieder mit diesem Thema komme aber irgendwie schaffe ich es nicht eine XML Datei zu erstellen.
Warum Sorry? Wenn etwas unklar ist, dann sollte schon gefragt werden.

Zitat:
Diesen Code hab ich aus einem Beitrag aus diesem Forum aber bei mir scheint er nicht richtig zu funktionieren.
Wieder mal eine kleine Kritik am Rande: hilfreicher als obiger Satz wäre gewesen, wenn du sagst, aus welchem Beitrag der Code stammt. Wenn nämlich wirklich was falsch ist, dann sollten solche Fehler auch behoben werden, damit nicht ein anderer den selben Quark benutzt. Aber evtl. funktioniert der hier im Forum gepostete Code ja auch, und du hast ihn nur falsch übernommen?

Zitat:
An den Versionen von MSXML kann es nicht liegen ich hab (2,3,4) bereits ausprobiert.
Ich habe nun zwar alle Typbibliotheken von MS XML 2 bis 4 hier liegen, aber bevorzugt arbeite ich mit MS-XML 3. Und da habe ich bereits den ersten Fehler in deinem Code gefunden, denn in dieser Typbibliothek gibt es kein TDOMDocument. MS-XML 4 kennt den aber auch nicht.

Zitat:
kann es sein, dass diese ertst bei Delphi 6 enthalten sind?
Ja.

Zitat:
Ich hab leider Delphi 5 und mir deswegen die Typbibliothek von Microsoft (MSXML4) importiert.
Offensichtlich nicht richtig, denn mein Ansatz sähe so aus. Und er funktioniert:
Delphi-Quellcode:
var
  Sub : IXMLDOMNode;
  DomDoc : DOMDocument;
begin
  domdoc := CoDOMDocument.Create;

  if(domdoc <> nil) then try
    sub := domdoc.createElement('MeinNode');
    sub.text := 'Hallo Welt';

    domdoc.appendChild(sub);
    ShowMessage(domdoc.xml);

    domdoc.save(ExtractFilePath(paramstr(0)) + 'test.xml');
  finally
    domdoc := nil;
  end;
end;
Gruß.
  Mit Zitat antworten Zitat
MoreThanWords

Registriert seit: 2. Apr 2003
3 Beiträge
 
#5
  Alt 4. Apr 2003, 08:49
Hey Danke,

hat funktioniert.

Zitat:
Und da habe ich bereits den ersten Fehler in deinem Code gefunden, denn in dieser Typbibliothek gibt es kein TDOMDocument.
Bei dem Beispiel, dass ich hier gefunden habe war leider keine Deklaration der Variablen deswegen habe ich der Klasse auch ein "T" vorangesetzt wie bei fast allen Klassen.
Somit hatte ich eine Variable von Typ TDOMDocument statt DOMDocument.

Komisch dass sich Delphi nicht beschwert hat.

Bis dann..
Mit dem Computer kann man Probleme lösen, die man ohne nicht hätte.
  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 02:29 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