我想將一個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