我想将一个XHTML文件加载到LINQ XElement中。但是,我遇到了解决问题的问题。这个问题有如下定义做:如何使用自定义XmlUrlResolver将XHTML文件加载到XElement中?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
我有一个重载GetEntity定制XmlUrlResolver它转换等环节 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
?
或者,您还可以将公共ID解析为它看起来似乎是系统ID,并且它会正常工作,而不会在加载或解析期间生成任何异常。 – Jaapjan 2010-02-08 08:51:33