Autor Beitrag
miracle2k
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Di 10.06.03 12:13 
Ich verwende die Klasse TXMLDocument um, ja genau, richtig, XML Dokumente zu parsen. Soweit so gut.
Im XML Dokument soll man nun bestimmte Entities verwenden können. Leider schlägt der Parser da Alarm: "Verweis auf eine nicht definierte Entität %".

Die Frage ist nun: Wie kann ich dem Parser das Entity bekannt machen.
Über eine Doctype direkt im XML Dokument funktioniert es. Aber das nützt mir nichts, erstens muss der Wert vom Programm bestimmt werden, zweitens werden einige der Entities in den meisten Fällen nur einmal verwendet, da könnte man es gleich ausschreiben.
Eine externe Doctype gefällt mir auch nicht, vor allem wegen erstens.

Das Entity muss also zur Laufzeit registriert werden, doch wie?

Es gibt die Eigenschaft TXMLDocument.(Document.)Doctype.entities die soetwas zu ermöglichen scheint (Ob Document oder nicht weiß ich nicht genau, und habe gerade kein Delphi da). Doch ich schaffe es einfach nicht, darüber das Entity bekannt zu machen.

Danke für eure Hilfe.
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 10.06.03 18:31 
Bringt es was, mit
ausblenden Delphi-Quelltext
1:
xmldoc.resolveExternals := false;					

den Parser sozusagen zum Schweigen zu bringen? :wink: Das Beispiel stammt zwar von der Typbibliothek des MS-XML-4-Parsers, aber ich bin sicher, eine ähnliche oder gleichnamige Funktion wird es auch bei dir geben.

Was das Erstellen eines Entities zur Laufzeit angeht, schau dir mal das VB-Beispiel zu "createEntityReference" in Microsofts PSDK an. Vielleicht hilft dir das weiter.

Oder bringe ich jetzt was durcheinander? :?
miracle2k Threadstarter
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Fr 13.06.03 20:01 
ResolveExternals bewirkt leider nichts - ich glaube das bezieht sich eher auf das parsen von externen dtd's u.ä.

Das PSDK habe ich leider nicht - und 300 MB sind mir etwas zu viel. Könntest du das Beispiel mal posten?

Ansonsten habe ich aber mal in der MSDN zu CreateEntityReference nachgesehen - so wie es da erklärt wird funktioniert es nicht: Ich kann nicht auf DomDocument zugreifen, bevor ich eine XML Datei geladen habe. Sobald ich aber eine lade, wird bereits geparst und der Fehler tritt auf.