![]() |
Alternative zum MSXML
Huhu,
ich code gerade an einem Programm, welches seine Daten in einer XML Datei speichert. Dazu habe ich bis vor kurzem noch den MSXML Parser benutzt. Wie der Zufall es wollte, installierte ich gerade eben das neue GExperts 1.20b1 und las die Readme (manchmal stehen da wirklich interessante Sachen drin ;)) und die erwähnten da eine Bibliothek namens OmniXML, womit sie ihre Daten speichern. *denk* XML ist immer gut, dachte ich mir und surfte zur angegebenen URL ( ![]()
Code:
wird
xmldoc.save(strFileName);
Code:
. :)
xmldoc.save(strFileName, ofIndent);
Bis denn, Philipp |
Re: Alternative zum MSXML
Hi Philipp,
wie läuft das ganze denn? Ist das komplett eigenständig, oder baut das auf einem anderen Parser auf? Ist das ganze schnell, oder eher langsamer als MSXML? Chris |
Re: Alternative zum MSXML
Hi,
ich hab mir das gerade mal angesehen. So wie das aussieht, ist das eigentlich nur ein Aufsatz auf MSXML4. Ich werde es jetzt aber auf jedenfall mal ausprobieren, weil ich ja mal versuchen will meine Software fertigzustellen. ;) Chris |
Re: Alternative zum MSXML
Nein, das stimmt nicht, es ist ein komplett selbstgecodeter Parser für XML. Es *kann* als Fundament auch den MSXML benutzen, falls der einem besser gefällt und dann fungiert OmniXML als Wrapper. Das ist aber natürlich nur zu empfehlen, falls der MSXML wirklich mal was besser können sollte... ;)
Philipp PS. Hey, du bist ja schon wieder aus dem Urlaub zurück, Chris! :) |
Re: Alternative zum MSXML
Sehr schön. Werde ich mir auch gleich mal anschauen. :)
|
Re: Alternative zum MSXML
Hi,
Zitat:
Aber dann eine Frage: wenn ich OmniXML verwenden würde, müsste ich dazu dann kein MS XML mitliefern? Zitat:
Chris |
Re: Alternative zum MSXML
Zitat:
Zitat:
Aber hey, eins kann OmniXML noch nicht: XML-Code umwandeln. Aus dieser Datei ("links.xml")
Code:
wird dann XSL-Stylesheet/Transform ("links.xsl")
<?xml version="1.0"?>
<?xml-stylesheet href="links.xsl" type="text/xsl"?> <links> <link href="http://www.delphipraxis.net">Delphi-PRAXiS</link> <link href="http://www.delphi-forum.de">Delphi-Forum</link> <link href="http://www.csd-software.net">CSD-Software</link> <link href="http://www.luckie-online.de">luckie-online</link> </links>
Code:
ein HTML-Dokument. Entweder via IE oder auch mit folgendem Delphi-Code (unter Benutzung des MS-XML-Parsers):
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="html" encoding="windows-1252" doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" indent="no"/> <xsl:template match="/"> <xsl:apply-templates/> </xsl:template> <xsl:template match="links"> <html> <head> <title>Links</title> </head> <body> <xsl:if test="count(child::*)>0"> <table border="0" width="100%" style="border:#000000 1px solid;"> <xsl:apply-templates/> </table> </xsl:if> </body> </html> </xsl:template> <xsl:template match="link"> <xsl:if test="@href!=''"> <tr><td> <a> <xsl:attribute name="href"><xsl:value-of select="@href"/></xsl:attribute> <xsl:attribute name="target">_blank</xsl:attribute> <xsl:apply-templates/> </a> </td></tr> </xsl:if> </xsl:template> </xsl:stylesheet>
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var xsldoc, xmldoc : DomDocument40; begin // XML-Dokument erzeugen, ... xmldoc := CoDomDocument40.Create; if(xmldoc <> nil) then try xmldoc.async := true; xmldoc.resolveExternals := true; xmldoc.preserveWhiteSpace := true; // ... & laden xmldoc.load('links.xml'); // XSL-Stylesheet/Transform erzeugen, ... xsldoc := CoDomDocument40.Create; if(xsldoc <> nil) then try // ... & laden xsldoc.load('links.xsl'); // XML-Code mit Hilfe der XSL-Datei // in HTML-Code transformieren ShowMessage( xmldoc.transformNode(xsldoc.documentElement) ); finally xsldoc := nil; end; finally xmldoc := nil; end; end; |
Re: Alternative zum MSXML
Chris, ruhig Blut! ;)
Nur weil es neu ist, ist es ja nicht schlecht. Ich wette, der Microsoft Parser hat mehr Bugs als OmniXML ;) und okay, wenn einige Features fehlen, dann kann man den Entwickler ja fragen (das ganze sieht nämlich ziemlich aktiv aus). :) Durchsetzen? Es ist ganz einfach eine andere Implementation eines Standards, eine recht gute würde ich mal sogar sagen, da muss sich nichts durchsetzen. :) Entweder man benutzt das, oder halt den MSXML, oder noch etwas anderes, ich denke mal, alles hat seine Vor- und Nachteile. Nein, man muss den MSXML nicht mitliefern, OmniXML ist davon unabhängig und hat so gesehen nichts damit zu tun, außer, dass es damit quasi Source-Kompatibel ist. :) Das ist für mich irgendwo schon ein ziemliches Argument, immerhin ist das Viech von MS rund 1 MByte groß und wenn ich mein Programm quasi einfach nur neukompilieren muss um eine (schlankere, schnellere, bessere, sonstige ?) Implementierung direkt integriert zu haben, dann ist das doch ziemlich gut, finde ich. :) Mathias: Ja, scheint so, als wäre der ganze XSL-Kram noch nicht implementiert ... :-/ Naja, ich hab das noch nie benutzt, aber ich schicke dem Entwickler mal eine Mail, ob er plant, das noch einzubauen. :) Zum "Selbercoden" ist das wohl etwas viel, ist ja keine Funktion, die man mal eben so einbauen kann, ... Philipp |
Re: Alternative zum MSXML
Ich hab´s auch bloß durch mein Prüfprogramm bemerkt. Das nehme ich eigentlich, um nach Fehlern zu suchen. Sprich: es lädt die Datei, und der Parser meldet mir dann evtl. Fehler. Und da war noch ein Stückchen Code drin, dass (sofern die XSL-Datei vorhanden war) einen Knoten eben umgewandelt hat.
Ansonsten wär´s mir auch nicht aufgefallen. |
Re: Alternative zum MSXML
Hallo.
Ich habe eine Frage zu Omnixml: unterstützt der Parser auch DTDs? Ist vieleicht eine komische Frage, aber ich habe bis jetzt noch keinen XML-parser verwendet, ich kenne nur die Theorie von XML und DTDs (Syntax, Regeln, Formatierung usw.). |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:52 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 by Thomas Breitkreuz