Entwickler-Ecke

IO, XML und Registry - Externe DTD ohne Internet


k-weddige - So 30.11.08 01:03
Titel: Externe DTD ohne Internet
Moin,

ich lese eine XML-Datei mit DTD ein. Alles funktioniert tadellos - solange ich online bin.
Wenn ich das Programm jedoch ohne Internetverbindung starte, kommt eine Fehlermeldung, dass die Domain, auf der die DTD liegt, nicht geöffnet werden konnte.

Wie kann ich in diesem Fall die DTD ignorieren, bzw. dem Programm lokal zur Verfügung zu stellen?

TIA
Konstantin


Kha - So 30.11.08 02:01
Titel: Re: Externe DTD ohne Internet
user profile iconk-weddige hat folgendes geschrieben Zum zitierten Posting springen:
Wie kann ich in diesem Fall die DTD ignorieren, [...]
XmlDocument, nehme ich an? Linq To XML (System.Xml.Linq.XElement), die API der Wahl ab 3.5, besitzt überhaupt keinen DTD-Support, sollte es also ignorieren.


k-weddige - So 30.11.08 16:37

Ganz auf DTD zu verzichten würde die DTD ja überflüssig machen. Mir wäre eine Lösung, die wenn möglich validiert, und wenn nicht möglich darüber hinwegsieht.
Könnte ich die DTD nicht lokal hinterlegen, so dass sie über den public identifier zugeordnet wird? Oder würde eine XSD das Problem lösen?

Irgendeine Möglichkeit die XML-Datei zu validieren wollte ich eigentlich behalten.


k-weddige - Di 02.12.08 19:57

Hab die Lösung gefunden: XmlUrlResolver ableiten und in ResolveUri den public identifier abfangen.

Quelle: http://sticklebackplastic.com/Posts/PostsByMonth.aspx?y=2007&m=6

Konstantin