AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Delphi Probleme mit wohlgeformte-XML-Datei
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit wohlgeformte-XML-Datei

Ein Thema von toko · begonnen am 26. Mai 2005 · letzter Beitrag vom 27. Mai 2005
 
toko

Registriert seit: 19. Apr 2005
40 Beiträge
 
#1

Probleme mit wohlgeformte-XML-Datei

  Alt 26. Mai 2005, 14:04
Hallo,

ich benutze eine XML-Datei um CD-Listen abzuspeichern. Den Dateinamen können die Benutzer selber wählen.
Also für eine CD-Listen eine XML-Datei.
Ich habe folgende Prozedur zum Anlegen einer XML-Datei:
Delphi-Quellcode:
procedure TfrmMain.createNewXMLFile;
var
  NewXMLDoc : TXMLDocument;
  xmlInitializeContents : TStrings;
begin
  NewXMLDoc := TXMLDocument.Create(self);
  xmlInitializeContents := TStringList.Create;
  xmlInitializeContents.Add('<?xml version="1.0"?>');
  xmlInitializeContents.Add('<!DOCTYPE ?Name_weiß_ich_nicht? "?Name_weiß_ich_nicht?.dtd">');
  xmlInitializeContents.Add('<cdorganizer>');
  xmlInitializeContents.Add('</cdorganizer>');
  NewXMLDoc.XML := xmlInitializeContents;
  NewXMLDoc.Active := true;
  if dlgSave.Execute then begin
    NewXMLDoc.FileName := dlgSave.FileName;
    NewXMLDoc.SaveToFile(NewXMLDoc.FileName);
  end;
  NewXMLDoc.Active := true;
end;
Damit die XML-Datei wohlgeformt ist, muss doch folgende Zeile eingefügt werden, oder?
  xmlInitializeContents.Add('<!DOCTYPE ?Name_weiß_ich_nicht? "?Name_weiß_ich_nicht?.dtd">'); hier habe ich aber das Problem, dass ich nicht weiß, welche Datei der Benutzer später im SaveDialog angibt, um so die dtd-Datei zu erstellen.

Liege ich den damit richtig? Denn wenn ich den "Doctype" weglasse sieht meine xml-Datei so aus:
XML-Code:
<?xml version="1.0"?>
<cdorganizer>
   <cd><cdid>1</cdid><cdtitel>test</cdtitel><interpret>test</interpret><genre>test</genre></cd><cd></cdorganizer>
Die CD-Elemente lege ich folgendermaßen an:
Delphi-Quellcode:
procedure TfrmCD.btnOKClick(Sender: TObject);
var
  cdobj: TCD;
  newsub,
  newcd : IXMLDOMNode;
begin
  cdobj := TCD.Create;
  cdobj.CDTitel := edtTitel.Text;
  cdobj.CDInterpret := edtInterpret.Text;
  cdobj.CDGenre := edtGenre.Text;
  cdobj.Save;
  {in XML-Datei schreiben, anfang}
  newcd := frmMain.xmlDoc.createElement('cd');

  newsub := frmMain.xmlDoc.createElement('cdid');
  newsub.text := IntToStr(frmMain.strgrdCDListe.RowCount);
  newcd.appendChild(newsub);

  newsub := frmMain.xmlDoc.createElement('cdtitel');
  newsub.text := cdobj.CDTitel;
  newcd.appendChild(newsub);

  newsub := frmMain.xmlDoc.createElement('interpret');
  newsub.text := cdobj.CDInterpret;
  newcd.appendChild(newsub);

  newsub := frmMain.xmlDoc.createElement('genre');
  newsub.text := cdobj.CDGenre;
  newcd.appendChild(newsub);

  frmMain.xmlDoc.documentElement.appendChild(newcd);
  frmMain.xmlDoc.save(frmMain.xmlfile);
  {in XML-Datei schreiben, ende}
  
  {in TStringGrid zu Ansicht darstellen}
  with frmMain.strgrdCDListe do begin
    begin
      RowCount := frmMain.strgrdCDListe.RowCount+1;
      Cells[0,frmMain.strgrdCDListe.RowCount-1]:=IntToStr(frmMain.strgrdCDListe.RowCount-1);
      Cells[1,frmMain.strgrdCDListe.RowCount-1] := cdobj.CDTitel;
      Cells[2,frmMain.strgrdCDListe.RowCount-1] := cdobj.CDInterpret;
      Cells[3,frmMain.strgrdCDListe.RowCount-1] := cdobj.CDGenre;
      RowHeights[frmMain.strgrdCDListe.RowCount-1] := rowxheights;
    end;
  end;
  cdobj.Free;
  Close;
end;
Ich habe nämlich vor im nachhinen nach einer "cd" über die cd-id zu suchen und weitere Kindknoten an diesem Eintrag anhängen.
Z.B. soll die Datei dann folgendermaßen aussehen:
XML-Code:
<?xml version="1.0"?>
<cdorganizer>
    <cd>
        <cdid>1</cdid>
        <cdtitel>titel 1</cdtitel>
        <interpret>interpret 1</interpret>
        <genre>genre 1</genre>
        <track>
            <trackid>1</trackid>
            <tracktitel>track 1</tracktitel>
            <dauer>3:11:07</dauer>
        </track>
        <track>
            ...
        </track>
    </cd>
    <cd>
        ...
    </cd>
</cdorganizer>
Über Hilfe bin ich sehr dankbar. Kritik zum Code ist ebenfalls willkommen.

gruß
  Mit Zitat antworten Zitat
 


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 10:10 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