2009-12-09 4 views
1

Un de nos programmes lit un fichier XML. Le fichier XML a standalone = 'no' en-tête.Comment contrôler la lecture de la DTD avec .NET?

Le DOCTYPE utilisé pour ressembler à:

<!DOCTYPE foo SYSTEM "silly.dtd"> 

où silly.dtd ne siège pas là à côté du fichier.

Pour diverses raisons, j'ai changé cela

<!DOCTYPE foo PUBLIC "-//Some Public Id" "urn:outerspace:silly.dtd"> 

Je me attendais rien à changer, car la DTD ne pouvait pas être ouverte comme « ./silly.dtd » avant, et il ne peut pas être ouverte à 'urn: outerspace: silly.dtd' maintenant. La seule différence était qu'un résolveur de catalogue n'aurait pas à s'inquiéter de l'absolutisation de l'ID du système. Imaginez ma surprise pour obtenir une exception de l'exécution .NET, essayant apparemment d'ouvrir la DTD à l'adresse urn:.

Une personne aimable peut-elle me diriger vers une recette pour dire à .NET d'abandonner tranquillement dans ce cas? Je sais comment faire cela en Java, mais en .NET je suis un peu perdu.

Répondre

0

Le lecteur ne tentera pas d'accéder au dtd si vous avez les propriétés suivantes: .ProhibitDtd = false; .XmlResolver = null;

+0

Ce n'est pas ce qui m'est arrivé. Lorsque j'ai défini le résolveur sur null dans les options du lecteur, il est parti et a créé un résolveur par défaut. – bmargulies

Questions connexes