AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte himXML (gesprochen himix ML)
Thema durchsuchen
Ansicht
Themen-Optionen

himXML (gesprochen himix ML)

Ein Thema von himitsu · begonnen am 12. Mär 2009 · letzter Beitrag vom 11. Nov 2020
Antwort Antwort
Seite 16 von 26   « Erste     6141516 1718     Letzte »    
franktron

Registriert seit: 11. Nov 2003
Ort: Oldenburg
1.446 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#1

Re: himXML (gesprochen himix ML)

  Alt 26. Aug 2009, 16:03
Wie kann man den die Werte dieser XML Datei laden

XML-Code:
<?xml version="1.0"?>
<config>
   <port>35353</port>
  <username>frank</username>
   <password>12345</password>
   <server>lserv</server>
   <db>devtest</db>
   <dbport>3306</dbport>
</config>
Das ist mein Versuch

Delphi-Quellcode:
  XML:=TXMLFile.Create(nil);
  XML.LoadFromFile(FConfigPath+'config.xml');
  With XML.RootNode.Node['config'] do
  Begin
    FDB.Port:=StrToIntDef(Node['port'].Text,35353);
    FDB.Server:=Node['server'].Text;
    FDB.Username:=Node['username'].Text;
    FDB.Password:=Node['password'].Text;
    FDB.Database:=Node['db'].Text;
  End;
da kommt aber nie ein Text raus was mach ich falsch
Frank
Tux sein Lieblingsquellcode
While anzfische<TuxSatt do begin
Fisch:=TFisch.Create; Tux.EssenFisch(Fisch); Fisch.Free;inc(anzfische); end;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.372 Beiträge
 
Delphi 12 Athens
 
#2

Re: himXML (gesprochen himix ML)

  Alt 26. Aug 2009, 16:17
Der <config> ist bei dir schon der RootNode (es kann ja nur Einen geben )

Also einfach das .Node['config'] danach weglassen.

Ansonsten müßtest du über XML.Nodes gehen, da sind die ganzen Wurzelelemente drin enthalten.
> XML.Nodes.Node['config']



PS: RootNode gibt immer den ersten und einzigen Daten-Knoten der Datei zurück.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
franktron

Registriert seit: 11. Nov 2003
Ort: Oldenburg
1.446 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#3

Re: himXML (gesprochen himix ML)

  Alt 26. Aug 2009, 16:20
Danke jetzt gehts
Frank
Tux sein Lieblingsquellcode
While anzfische<TuxSatt do begin
Fisch:=TFisch.Create; Tux.EssenFisch(Fisch); Fisch.Free;inc(anzfische); end;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.372 Beiträge
 
Delphi 12 Athens
 
#4

Re: himXML (gesprochen himix ML)

  Alt 26. Aug 2009, 16:28
Zitat von franktron:
Danke jetzt gehts
PS: wenn etwas nicht gefunden wird, kannst du auch mal xoNodeAutoCreate aus XML.Options entfernen, dann werden Exceptions geworfen.

in deinem Fall war es so, daß du auf Nodes zugreifen wolltest, welche nicht existierten und deßhalb automatisch angelegt wurden.
XML-Code:
<?xml version="1.0"?>
<config>
  <config>
    <port\>
    <username\>
    <password\>
    <server\>
    <db\>
    <dbport\>
  </config>
  <port>35353</port>
  <username>frank</username>
  <password>12345</password>
  <server>lserv</server>
  <db>devtest</db>
  <dbport>3306</dbport>
</config>
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#5

Re: himXML (gesprochen himix ML)

  Alt 29. Aug 2009, 18:28
Hallo,
ich wollte QuickDownload etwas umschreiben und deine Lib benutzen.

Nun habe ich folgendes:
Delphi-Quellcode:
procedure TForm4.Button1Click(Sender: TObject);
var
  XML : TXMLFile;
begin
  if SDSave.Execute then
  begin
    XML := TXMLFile.Create;
    try
      XML.Encoding := 'UTF-8';
      XML.RootNode.Name := 'qd2';
      XML.RootNode.AddNode('file');
      XML.RootNode.AddNode('file\filename').Text := EFilename.Text;
      XML.RootNode.AddNode('file\source').Text := ESource.Text;
      XML.RootNode.AddNode('file\description', xtCData).Text := MDescription.Text;
      XML.RootNode.AddNode('file\size').Text := SESize.Value;
// FLAGS XML.RootNode.AddNode('file\').Text := SESize.Value;
      XML.RootNode.AddNode('file\destination').Text := SESize.Value;
      XML.SaveToFile(SDSave.FileName);
    finally
      XML.Free;
    end;
  end;
end;
Aber er meckert rum, wenn er versucht die Beschreibung zu speichern

Und könntest du nicht ein kleines Tutorial schreiben

MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.372 Beiträge
 
Delphi 12 Athens
 
#6

Re: himXML (gesprochen himix ML)

  Alt 31. Aug 2009, 11:47
Zitat von xZise:
Aber er meckert rum, wenn er versucht die Beschreibung zu speichern
wer meckert wo rum?

Zitat:
text node can't constain subnodes
besagt ja sozusagen, das Problem ... CDATA ist ein Node, welcher keine anderen Geschwister-Nodes haben darf.

nun möchte dieser Code
Code:
XML.RootNode.Name := 'qd2';
XML.RootNode.AddNode('file');
XML.RootNode.AddNode('file\filename').Text := EFilename.Text;
XML.RootNode.AddNode('file\source').Text := ESource.Text;
[color=#ff0000]XML.RootNode.AddNode('file\description', xtCData)[/color].Text := MDescription.Text;
XML.RootNode.AddNode('file\size').Text := SESize.Value;
XML.RootNode.AddNode('file\destination').Text := SESize.Value;
soeine XML erstellen (welches natürlich nicht XML-konform wäre)
Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<qd2>
  <file>
    <filename>C:\EFilename.Text</filename>
    <source>ESource.Text</source>
    [color=#ff0000]<![CDATA[MDescription.Text]]>[/color]
    <size>SESize.Value</size>
    <destination>SESize.Value</destination>
  </file>
</qd2>
du möchtests aber eigentlich Dieses
Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<qd2>
  <file>
    <filename>C:\EFilename.Text</filename>
    <source>ESource.Text</source>
    [color=#ff0000]<description><![CDATA[MDescription.Text]]></description>[/color]
    <size>SESize.Value</size>
    <destination>SESize.Value</destination>
  </file>
</qd2>
nun gibt es mehrere Wege ... z.B.:
Delphi-Quellcode:
XML.RootNode.AddNode('file\description').AddNode('', xtCData).Text := MDescription.Text;

XML.RootNode.AddNode('file\description\', xtCData).Text := MDescription.Text;

Node := XML.RootNode.AddNode('file\description');
Node.asCDATA(True);
Node.Text := MDescription.Text;
ein Leername '' zum Erstellen, da der CDATA-Naode ja namenslos ist
(OK, eigentlich ist der Name dieses Nodes "CDATA", aber das ist ja egal und ich unterstützt diesbezüglich auch keine anderen Namen, drum der Leername, da hier der Name den Typ des Inhalts angibt und laut XML-Spec eh nur dieser Typ vordefiniert ist)

aber dank xoNodeAutoCreate und da UTF-8 eh Standard ist, würde ich es einfach nur so machen
Delphi-Quellcode:
XML := TXMLFile.Create;
try
  XML.RootNode.Name := 'qd2';
  XML.Node['file\filename'].Text := EFilename.Text;
  XML.Node['file\source'].Text := ESource.Text;
  XML.Node['file\description'].asCDATA(True);
  XML.Node['file\description'].Text := MDescription.Text;
  XML.Node['file\size'].Text := SESize.Value;
  XML.Node['file\destination'].Text := SESize.Value;
  XML.SaveToFile(SDSave.FileName);
finally
  XML.Free;
end;
Zitat:
Und könntest du nicht ein kleines Tutorial schreiben
Mal sehn, ich versuche nebenbei mir endlich mal wieder eine Webseite auszubauen und in die dort enstehende Befehlsreferenz + kleine Hilfe könnte man bestimmt ein paar Beispiele und Dergleichen mit einbauen.
Aber erstmal muß die Webseite entstehen



Noch 'ne andere Frage.

Eigentlich hatte ich ja angefangen diese Klassen auch mit auf Interaces umzustellen,
nur gibt es da ein kleines Problem

Egal was ich Versuche, es bleibt dennoch ein Mischmasch aus Interfaces und Objekten,
sei es durch Verwendung von TStream und der ObjektSerialisierung und die Variants passen auch nicht so ganz mit den Interface-Philosophi zusammen.

Ja, es gibt IStream, aber das ist in Delphi komplett unabhngig von TStream und auch wenn ich mit dafür eigene Objekte erstellen, dann brauch ich auch noch einen Umweg zum normalen TStream, um auch diesen zu unterstützen.


Das Problem war gerade, daß ich nun mal endgültig auf Interfaces umstellen wollte, aber dieses einfach nicht komplett möglich ist

Nun bleibt also noch der andere Weg:
ich entferne die Interfaces wieder komlett raus und lasse alles einheitlich auf Objekten (dürfte auch etwas übersichtlich werden)



Würde sich also jemand drann stören, wenn ich nun doch zukünftig keine Objekte mehr anbieten werde?
(hatte ja eh immernoch das besch*** Problem mit der nicht richtig funktionierenden Referenzzählung)

Der Hauptgrund für die Interfaces war ja, daß ich ich mal sehr große XML-Dateien unterstützen wollte, ohne das man diese in den RAM kopieren muß (wenn es überhaupt möglich wäre).
Allerdings gibt es ja zum Lesen schon den SAX-Parser und demnächst entsteht auch noch ein SAX-Writer als Gegenstück ... und mit den Beiden wären ja ein sequentieller lesender oder schreibender Zugriff auf Dateien bis in den ExaBeyte-Bereich (64 Bit) möglich.

Außerdem sind schon Pläne für einen bedingt Schreibenden und Lesenden XML-LogFile-Writer vorhanden.
Welcher dann sozusagen und unter Bestimmten Bedinungen speichersparend (RAM) in beliebig große Dateien neue Daten/Nodes einfügen könnte.

Also meinerseits gibt es nun/bald keinen wichtigen Grund mehr für Interfaces.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#7

Re: himXML (gesprochen himix ML)

  Alt 31. Aug 2009, 14:43
Zitat von himitsu:
Würde sich also jemand drann stören, wenn ich nun doch zukünftig keine Objekte mehr anbieten werde?
[...]
Also meinerseits gibt es nun/bald keinen wichtigen Grund mehr für Interfaces.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.372 Beiträge
 
Delphi 12 Athens
 
#8

Re: himXML (gesprochen himix ML)

  Alt 31. Aug 2009, 14:50
ups ...
Zitat:
Würde sich also jemand drann stören, wenn ich nun doch zukünftig keine Interfaces mehr anbieten werde?
nja, aktuell ist es so, das man das ganze Projekt als Objekt-Version oder als Interface-Version kompilieren kann

TXMLFile, TXMLNode und Co.
oder
IXMLFile, IXMLNode und Co.

Weil ja Interfaces soooowas von "cool" sind, hatte ich mal angefangen alles auf Diese umzustellen
(aktuell noch umschaltbar)

Nur läßt sich einfach nicht alles nach diesem Schema nutzen und es wäre immer ein Mischmasch,
drum plane ich, die Interface-Version wieder rauszunehmen
und dafür alles durchweg komplett als mit Klassen zu machen.


Aktuell ist die Version mit Interfaces eh nicht so richtig nutzbar, aber könnte ja sein, daß wer darauf spekuliert hat, dieses später man nutzen zu können
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#9

Re: himXML (gesprochen himix ML)

  Alt 31. Aug 2009, 16:02
Also ich kann auf Interfaces verzichten, hab' lieber was in der Hand

Aber mich darf man nicht als Maß nehmen, bin sowieso mehr rustikal eingestellt...
  Mit Zitat antworten Zitat
Benutzerbild von holliesoft
holliesoft

Registriert seit: 4. Apr 2005
Ort: Gau-Algesheim
250 Beiträge
 
FreePascal / Lazarus
 
#10

Re: himXML (gesprochen himix ML)

  Alt 31. Aug 2009, 19:24
Also auf die Interfaces kann auch ich verzichten.
Bin mit den Objekten zufrieden

Bin sehr zufrieden mit himXML, würde gerne was spenden. Himitsu, hast Du ein Paypal Konto? Schreib doch evtl. eine kurze PM.

Gruß
Patrick
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 16 von 26   « Erste     6141516 1718     Letzte »    


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:

(?)

LinkBack to this Thread

Erstellt von For Type Datum
xml - MSXML alternative - Stack Overflow This thread Refback 28. Jun 2011 15:34

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