Einzelnen Beitrag anzeigen

MathiasSimmack
(Gast)

n/a Beiträge
 
#1

Mal ´n bisschen XML

  Alt 18. Aug 2002, 17:13
Hi Leute.

Ich habe ein paar kleine Fragen, weil ich mich (gezwungenermaßen!) erst seit letztem Freitag mit dem Thema XML beschäftige. Also, grundlegende Probleme mit der XML-Syntax und dem Aufbau usw. habe ich nicht. Ich habe die Typenbibliothek Microsoft XML, v3.0 importiert, und damit lässt sich ja schön einfach arbeiten. Was ich aber wissen möchte:


1. Wie müsste eine Sicherheitsfunktion aussehen, die das Programm beendet, wenn auf dem Zielrechner kein MS-XML v3.0 möglich ist. Kann ja durchaus passieren. Meine Idee wäre, dass ich dynamisch die Bibliothek "msxml3.dll" lade und bei einem Fehler das Programm entsprechend abbreche. Denn: wenn die DLL nicht vorhanden, dann wird´s auch nix mit XML? Ist das ein guter Gedanke, oder wie wäre es richtig?

2. Wie steht´s mit dem Zeilenumbruch? Ich habe bemerkt, dass mein XML-Dokument eine lange Zeile ist. An sich nicht schlimm, aber prompt kam´s zu einem Problem bei dem Programm, dass auch auf die XML-Datei zugreifen muss. Ich behelfe mir momentan so, dass ich den XML-Code via "StringReplace" bearbeite. Will sagen: wenn ">" gefunden, dann mach ein ">#13#10" draus. - Da wäre natürlich auch eine einfachere Idee genial, denn "StringReplace" kostet ein bisschen Zeit.

3. Grandios ist das Problem: ich muss auf eine XML-Datei zugreifen, die nicht von mir ist. Es ist auch leider nicht möglich, diese Datei zu ignorieren und von Null anzufangen. Aus Versehen oder auch absichtlich wurden in dieser XML-Datei die numerischen Attribute allerdings ohne Anführungszeichen gespeichert:

Code:
<FalscherTag value=1234/>
Laut XML-Syntax wäre aber

Code:
<RichtigerTag value="1234"/>
korrekt. Da der XML-Parser deswegen meckert, lade ich die Datei erst mal zeilenweise in ein String-Array, ergänze notfalls die Anführungszeichen und gebe sie dann erst an mein "DOMDocument" weiter. Geht das vielleicht auch einfacher und schneller?

4. Und generell: wie sieht eigentlich der korrekte Initialisierungscode aus? Ich habe dutzende Varianten im Web gesehen und mich erst mal für diese Variante entschieden:
Code:
[b]if[/b](CoInitialize([b]nil[/b]) = S_OK) [b]then[/b]
  [b]try[/b]
    xmldoc := CoDOMDocument.Create;
    [color=#000080][i]// usw.[/i][/color]
  [b]finally[/b]
    [color=#000080][i]// CoUninitialize;[/i][/color]
  [b]end[/b];
Das "CoUninitialize" musste ich z.B. ausklammern, weil´s beim Start von der Konsole (es soll auch nur Kommandozeilenprogramm bleiben!) regelmäßig Zugriffsverletzungen gab. Wer weiß, welche Variante richtig ist?


Wen der Hintergrund noch interessiert:

Nach über 2 Monaten hat sich Microsoft nun entschieden, mir die Genehmigung zur Benutzung zweier Tools nicht zu geben. Da ich die aber gebraucht hätte, um sog. "HTML Help Collections" (das PSDK ist eine solche!) zu erstellen, muss ich mir die XML-Tools nun selbst schreiben. Ich bin inzwischen auch fertig.
Gestern habe ich spaßeshalber mal mein PSDK de-registriert, und heute - nach Fertigstellung von "regcol.exe" - habe ich meine erste eigene Collection im System registriert. Geht also wunderbar. 8)

Nur die o.g. "Problemzonen" würde ich gern noch ausmerzen, damit die Tools auf möglichst allen Rechnern laufen. Dann steht einer Veröffentlichung inkl. Doku (und vielleicht auch Sourcen) nichts im Weg. Dann kann jeder Interessent eigene Collections zusammenbauen, ohne Microsoft um Erlaubnis fragen zu müssen.

Gruß,
Mathias.
  Mit Zitat antworten Zitat