有一個快速的選擇
覆蓋的XmlResolver創建一個通配符感知解析器:
class WildCardResolver : XmlUrlResolver
{
public override Uri ResolveUri(Uri baseUri, string relativeUri)
{
try
{
DirectoryInfo di = new DirectoryInfo(baseUri.AbsolutePath); // TODO Check it is valid.
string combinedFilePath = Path.GetTempFileName();
using (FileStream combinedStream = new FileStream(combinedFilePath, FileMode.OpenOrCreate))
{
foreach (FileInfo fi in di.GetFiles(relativeUri))
{
using (FileStream fileStream = new FileStream(fi.FullName, FileMode.Open, FileAccess.Read))
{
fileStream.CopyTo(combinedStream);
}
}
}
Uri absUri = new Uri(combinedFilePath);
return absUri;
}
catch(Exception ex)
{
//Log Exception
return base.ResolveUri(baseUri, relativeUri);
}
}
}
有很多事情要做的通知,如果通配符是適用於所有
此外, BaseURI可能會很棘手,因爲可以說源XML來自
file:// c:/myXMLRepository/myXML.xml
包括* inc.xml
現在基本URI是文件// C:/temp/tmpA0.tmp
。
。
祝你好運,
編輯:
那裏有另一個方法來覆蓋
public override object GetEntity(Uri absoluteUri, string role, Type ofObjectToReturn)
但也有通過實行其他問題......因爲絕對URI不會永遠是有效的,並且XIncludingReader嘗試並驗證它。