Я пытаюсь загрузить файл XHTML в элемент LINQ XElement. Тем не менее, я сталкиваюсь с проблемами с решателем. Проблема связана со следующим определением:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
У меня есть пользовательский XmlUrlResolver с переопределенным GetEntity, который преобразует ссылки, такие как
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd в поток локальных ресурсов. Это прекрасно работает почти для всего XHTML DTD. Единственное, что я на самом деле не могу разрешить, это Uri "- // W3C // DTD XHTML 1.0 Transitional // EN", и я не уверен, что мне с этим делать.
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);
}
Как вы видите в приведенном выше коде, все, что я не могу разрешить, обрабатывается по умолчанию XmlUrlResolver
. Это означает, что ссылка выше, начинающаяся с - // W3C /. Однако базовый метод создает DirectoryNotFoundException
. Продолжение будет загружать XElement
просто отлично. Если я вместо этого возвращаю пустой поток, это вызывает ошибку при загрузке XHTML в XElement
.
Любые подсказки, которые могут возникнуть у кого-либо относительно обработки такого определения PUBLIC с помощью пользовательского XmlUrlResolver
?