J'essaye d'obtenir un fichier XHTML chargé dans un XElement LINQ. Cependant, je rencontre des problèmes avec le résolveur. Le problème a à voir avec la définition suivante:Comment charger un fichier XHTML dans un XElement en utilisant un XmlUrlResolver personnalisé?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
J'ai un XmlUrlResolver personnalisé avec une GetEntity surchargée qui convertit des liens tels que http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd à un flux de ressources locales. Cela fonctionne très bien pour presque toute la DTD XHTML. Le seul que je suis incapable de résoudre est le Uri "- // W3C // DTD XHTML 1.0 Transitional // FR" et je ne suis pas sûr de ce que je devrais faire avec.
public override object GetEntity(Uri absoluteUri, string role, Type ofObjectToReturn)
{
var resourceName = "ePub.DTD." + absoluteUri.Segments[absoluteUri.Segments.GetLength(0) - 1];
if (_resources.Contains(resourceName))
{
Stream dataStream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName);
return dataStream;
}
return base.GetEntity(absoluteUri, role, ofObjectToReturn);
}
Comme vous le voyez dans le code ci-dessus, tout ce que je ne peux pas résoudre est gérée par la valeur par défaut XmlUrlResolver
. Cela signifie que le lien ci-dessus commence par - // W3C /. La méthode de base renvoie cependant un DirectoryNotFoundException
. Continuer va charger le XElement
très bien. Si je renvoie à la place un flux vide, cela provoque une erreur lors du chargement du XHTML dans le XElement
.
Tout indice que quelqu'un pourrait avoir à propos de la gestion d'une telle définition PUBLIC avec un XmlUrlResolver
personnalisé?
Alternativement, vous pouvez également résoudre l'ID public à l'ID du système qu'il semblerait et il fonctionnera correctement sans générer d'exception pendant le chargement ou la résolution. – Jaapjan