AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Delphi [XMLLib] - Strucktur erstellen
Thema durchsuchen
Ansicht
Themen-Optionen

[XMLLib] - Strucktur erstellen

Ein Thema von remo.mueller · begonnen am 23. Sep 2008 · letzter Beitrag vom 24. Sep 2008
Antwort Antwort
remo.mueller

Registriert seit: 27. Aug 2004
Ort: 127.0.0.1
8 Beiträge
 
Delphi 7 Personal
 
#1

[XMLLib] - Strucktur erstellen

  Alt 23. Sep 2008, 14:55
Guten Tag,

ich möchte folgende Struktur in XML erzeugen und speichern.
Ich verwende "XMLLib" von Muetze1.

Delphi-Quellcode:
<filter>
  <rule id="1" points="1,0" command="+Message-ID" regex="\.\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\@" info="Dotted IP in Message-ID" result=""/>      
</filter>
Irgendwie habe ich einen kleinen Denkknoten und komme nicht auf die Lösung.
Vielleicht könnte man mir mit einen Beispielcode helfen.


Besten Dank im Vorraus.
Remo
  Mit Zitat antworten Zitat
Roachford
(Gast)

n/a Beiträge
 
#2

Re: [XMLLib] - Strucktur erstellen

  Alt 23. Sep 2008, 15:31
Na, die habe ich doch noch vom letzten Problem rumliegen. Du weisst schon, dass der Author diese nicht mehr weiter pflegt?

Delphi-Quellcode:
function CreateXML(const AFilename: string): boolean;
var
  lLib: TXMLLib;
  lNode: TXMLNode;
begin
  lLib := TXMLLib.Create;
  try
    if lLib.CreatePathAndNode('filter/rule', lNode) then
    begin
      lNode.Attributes.SimpleAdd('id', '1');
      lNode.Attributes.SimpleAdd('points', '1,0');
      lNode.Attributes.SimpleAdd('command', '+Message-ID');
      lNode.Attributes.SimpleAdd('regex', '\.\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\@');
      lNode.Attributes.SimpleAdd('info', 'Dotted IP in Message-ID');
      lNode.Attributes.SimpleAdd('result', '');
    end;

    result := lLib.SaveToFile(AFilename);
  finally
    lLib.Free;
  end;
end;
  Mit Zitat antworten Zitat
remo.mueller

Registriert seit: 27. Aug 2004
Ort: 127.0.0.1
8 Beiträge
 
Delphi 7 Personal
 
#3

Re: [XMLLib] - Strucktur erstellen

  Alt 23. Sep 2008, 16:31
Zitat von Roachford:
Na, die habe ich doch noch vom letzten Problem rumliegen.
Du weisst schon, dass der Author diese nicht mehr weiter pflegt?
Danke ... das war schnell.
Ich habe schon überlegt auf "Chilkat XML" umzusteigen - ein ActiveX-Element.
Aber ich bin selbst kein Fan von ActiveX.

Übrigens wie kann ich in dieser Struktur noch ein oder mehrere Einträge vom Typ:
<rule id="1" points="1,0" command="+Message-ID" regex="\.\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\@" info="Dotted IP in Message-ID" result=""/> hinzufügen?

Mit besten Grüßen
Remo
  Mit Zitat antworten Zitat
Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#4

Re: [XMLLib] - Strucktur erstellen

  Alt 23. Sep 2008, 16:50
Zitat von Roachford:
Na, die habe ich doch noch vom letzten Problem rumliegen. Du weisst schon, dass der Author diese nicht mehr weiter pflegt?
Das heisst jetzt aber hoffentlich nicht dass die Lib schlechter ist als andere nur weil Muetze1 da nichts mehr machen will. Wenn du mal auf seinem Blog liest warum er nicht weitermacht sollte das doch zufriedenstellend sein!
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  Mit Zitat antworten Zitat
Roachford
(Gast)

n/a Beiträge
 
#5

Re: [XMLLib] - Strucktur erstellen

  Alt 23. Sep 2008, 17:36
Zitat von remo.mueller:
Übrigens wie kann ich in dieser Struktur noch ein oder mehrere Einträge vom Typ:
<rule id="1" points="1,0" command="+Message-ID" regex="\.\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\@" info="Dotted IP in Message-ID" result=""/> hinzufügen?
Ich habe ebend nochmal ein wenig rumprobiert und du kannst einfach Knoten erstellen und brauchst diese nicht mehr anzufügen, das macht die Lib selbst abhängig vom übergebenen Parent-Knoten. Wenn der Parent nil ist, also der Hauptknoten, den musst du als einziges der Root Eigenschaft der Lib zuweisen.

Also somit wäre es so möglich:
Delphi-Quellcode:
function CreateXML(const AFilename: string): boolean;
var
  lLib: TXMLLib;
  lNode: TXMLNode;
begin
  lLib := TXMLLib.Create;
  try
    lNode := TXMLNode.Create;
    lNode.Name := 'filter';

      // Root Knoten muss zugewiesen werden
    lLib.Root := lNode;


      // für deine weiteren Einträge dann:
    lNode := TXMLNode.Create(lLib.Root);
    lNode.Name := 'rule';
    lNode.Attributes.SimpleAdd('id', '1');
    lNode.Attributes.SimpleAdd('points', '1,0');
    lNode.Attributes.SimpleAdd('command', '+Message-ID');
    lNode.Attributes.SimpleAdd('regex', '\.\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\@');
    lNode.Attributes.SimpleAdd('info', 'Dotted IP in Message-ID');
    lNode.Attributes.SimpleAdd('result', '');

      // noch einer ...
    lNode := TXMLNode.Create(lLib.Root);
    lNode.Name := 'rule';
    lNode.Attributes.SimpleAdd('id', '1');
    lNode.Attributes.SimpleAdd('points', '1,0');
    lNode.Attributes.SimpleAdd('command', '+Message-ID');
    lNode.Attributes.SimpleAdd('regex', '\.\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\@');
    lNode.Attributes.SimpleAdd('info', 'Dotted IP in Message-ID');
    lNode.Attributes.SimpleAdd('result', '');

      // etc...

    result := lLib.SaveToFile(AFilename);
  finally
    lLib.Free;
  end;
end;
Zitat von Mackhack:
Das heisst jetzt aber hoffentlich nicht dass die Lib schlechter ist als andere nur weil Muetze1 da nichts mehr machen will. Wenn du mal auf seinem Blog liest warum er nicht weitermacht sollte das doch zufriedenstellend sein!
Ich habe nie behauptet das sie schlecht(er) ist, ich wollte ihn nur darauf hinweisen. Wenn er ein Projekt erstellt will man auch die Gewissheit in einiger Zeit das Projekt erstellen zu können. Und es ist nicht bei jedem Projekt gut auf etwas ohne Zukunft zu setzen. Vielleicht braucht er in einiger Zeit mal ein Feature was er jetzt noch vermisst und spätestens dann muss er wahrscheinlich einen Großteil seines Codes anpassen wegen Wechsel der XML Zugriffskomponenten.

Und ich habe mich in die Lib recht schnell reingefunden. Es gibt so manche Dinge die nicht stimmig sind (Nodes.Nodes[], etc. anstatt besser Nodes.Items[], Anscheinend keine UTF-16 Support), aber trotz alledem kam ich schnell damit zu Recht ohne gross was zu lesen, etc. Von daher wollte ich hier nichts schlecht machen, weil sonst hätte ich die Frage einfach stehen gelassen oder hätte gleich was mit OmniXML oder MSXML gepostet...

Also mal ganz ruhig...
  Mit Zitat antworten Zitat
remo.mueller

Registriert seit: 27. Aug 2004
Ort: 127.0.0.1
8 Beiträge
 
Delphi 7 Personal
 
#6

Re: [XMLLib] - Strucktur erstellen

  Alt 24. Sep 2008, 18:10
Also besten Dank für den Quellcode.
Der XML-Test hat mir gezeigt, daß eine Datenbank schneller ist.
Und bei meinen Spamfilter merkt man den Unterschied.


Mit besten Grüßen
Remo
  Mit Zitat antworten Zitat
Roachford
(Gast)

n/a Beiträge
 
#7

Re: [XMLLib] - Strucktur erstellen

  Alt 24. Sep 2008, 18:47
Zitat von remo.mueller:
Der XML-Test hat mir gezeigt, daß eine Datenbank schneller ist.
Wie? Du willst eine unprofessionelle XML Library gegen Datenbank antreten lassen? Dann kannste gleich ein Bobbycar gegen einen Merci vergleichen. Es gibt genug professionelle XML Datenbanksysteme, diese solltest du zum Test heranziehen. Die Library ist nichtmal ansatzweise dazu ausgelegt als Datenbank verwendet zu werden. Sie hat keine Optimierungen (z.B. Hashwerte) beim Knotensuchen noch ist die Verwaltung der Knoten allgemein optimiert geschweige denn auf Geschwindigkeit ausgelegt.
  Mit Zitat antworten Zitat
Benutzerbild von Der.Kaktus
Der.Kaktus

Registriert seit: 22. Jan 2008
Ort: Erfurt
958 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: [XMLLib] - Strucktur erstellen

  Alt 24. Sep 2008, 18:51
Zitat von Roachford:
Zitat von remo.mueller:
Der XML-Test hat mir gezeigt, daß eine Datenbank schneller ist.
Wie? Du willst eine unprofessionelle XML Library gegen Datenbank antreten lassen? Dann kannste gleich ein Bobbycar gegen einen Merci vergleichen. Es gibt genug professionelle XML Datenbanksysteme, diese solltest du zum Test heranziehen. Die Library ist nichtmal ansatzweise dazu ausgelegt als Datenbank verwendet zu werden. Sie hat keine Optimierungen (z.B. Hashwerte) beim Knotensuchen noch ist die Verwaltung der Knoten allgemein optimiert geschweige denn auf Geschwindigkeit ausgelegt.
Hi,

bescheidene Frage..was soll mir XML fuer Vorteile bringen? ..ich habe geringe Datenmengen.."Memtable"..habe groessere Datenmengen..strukturierte SQL DB..was brauch ich XML?
Gruss Kaki

Repeat Until true=false;
  Mit Zitat antworten Zitat
Roachford
(Gast)

n/a Beiträge
 
#9

Re: [XMLLib] - Strucktur erstellen

  Alt 24. Sep 2008, 23:14
Zitat von Der.Kaktus:
bescheidene Frage..was soll mir XML fuer Vorteile bringen? ..ich habe geringe Datenmengen.."Memtable"..habe groessere Datenmengen..strukturierte SQL DB..was brauch ich XML?
Und was fragst du das mich? Ich habe mir das nicht ausgedacht mit Datenbanken auf XML Basis, noch propagandiere ich dies hier.
  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 12:26 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