AGB  ·  Datenschutz  ·  Impressum  







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

Alternative zum MSXML

Ein Thema von philwo · begonnen am 18. Apr 2004 · letzter Beitrag vom 1. Jun 2004
Antwort Antwort
Seite 1 von 2  1 2      
philwo

Registriert seit: 18. Mär 2003
9 Beiträge
 
Delphi 7 Personal
 
#1

Alternative zum MSXML

  Alt 18. Apr 2004, 12:49
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 (www.omnixml.com) und stellte fest, dass das ein zur MSXML kompatibler Opensource (Mozilla Public License 1.1) XML Parser für Delphi ist. Ich habe ihn gerade in mein Programm eingebunden und das Portieren bestand einfach nur darin, aus den verwendeten Objekten wie IXMLDOMNode, IXMLDOMDocument2 sowas wie IXMLNode und IXMLDocument zu machen, außerdem wird das IXMLDocument nicht mit CoDOMDocument40.Create() sondern mit CreateXMLDoc() erstellt. Vielleicht interessiert es irgendjemanden, vielleicht als Alternative zu Microsoft Produkten, vielleicht einfach als besserer XML-Parser (jedenfalls ist er auf den ersten Blick besser, kann jedenfalls mehr). Ah, bevor ich es vergesse: Die hier oft gestellte Frage, wie man denn die XML-Dokumente "schön" speichern kann, lässt sich damit auch lösen: Aus
Code:
xmldoc.save(strFileName);
wird
Code:
xmldoc.save(strFileName, ofIndent);
.

Bis denn,
Philipp
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Alternative zum MSXML

  Alt 18. Apr 2004, 13:05
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
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Alternative zum MSXML

  Alt 18. Apr 2004, 13:16
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
  Mit Zitat antworten Zitat
philwo

Registriert seit: 18. Mär 2003
9 Beiträge
 
Delphi 7 Personal
 
#4

Re: Alternative zum MSXML

  Alt 18. Apr 2004, 15:14
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!
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#5

Re: Alternative zum MSXML

  Alt 18. Apr 2004, 15:18
Sehr schön. Werde ich mir auch gleich mal anschauen.
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Alternative zum MSXML

  Alt 18. Apr 2004, 15:26
Hi,
Zitat von philwo:
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...
Hm... Irgendwie ist mir das ganze durchaus suspekt. Nun gut. Scheinbar funktioniert es. Mal sehen ob es sich auch in der Praxis durchsetzen kann.

Aber dann eine Frage: wenn ich OmniXML verwenden würde, müsste ich dazu dann kein MS XML mitliefern?

Zitat von philwo:
PS. Hey, du bist ja schon wieder aus dem Urlaub zurück, Chris!
Jepp, kann ja nicht ewig weg sein.

Chris
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#7

Re: Alternative zum MSXML

  Alt 18. Apr 2004, 16:14
Zitat von Chakotay1308:
Irgendwie ist mir das ganze durchaus suspekt.
Warum? Es macht immerhin einen guten Eindruck, und die Umlernphase (wenn man bisher nur mit MS-XML gearbeitet hat) ist recht kurz.

Zitat:
Aber dann eine Frage: wenn ich OmniXML verwenden würde, müsste ich dazu dann kein MS XML mitliefern?
Ich denke: Nein.

Aber hey, eins kann OmniXML noch nicht: XML-Code umwandeln. Aus dieser Datei ("links.xml")
Code:
<?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>
wird dann XSL-Stylesheet/Transform ("links.xsl")
Code:
<?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::*)&gt;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>
ein HTML-Dokument. Entweder via IE oder auch mit folgendem Delphi-Code (unter Benutzung des MS-XML-Parsers):
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;
  Mit Zitat antworten Zitat
philwo

Registriert seit: 18. Mär 2003
9 Beiträge
 
Delphi 7 Personal
 
#8

Re: Alternative zum MSXML

  Alt 18. Apr 2004, 18:37
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
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#9

Re: Alternative zum MSXML

  Alt 18. Apr 2004, 19:10
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.
  Mit Zitat antworten Zitat
Fellmer Lloyd
(Gast)

n/a Beiträge
 
#10

Re: Alternative zum MSXML

  Alt 1. Jun 2004, 10:19
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.).
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 17:32 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