クイックオプションがあります
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);
}
}
}
ワイルドカードが適用可能かどうかを確認するには、やるべきことがたくさんあります
さらに、ソース XML が
ファイル://c:/myXMLRepository/myXML.xml
*inc.xml を含む
現在、ベース URI は file//c:/temp/tmpA0.tmp です。
.
.
ご多幸をお祈り申し上げます。
編集:
オーバーライドする別の方法があります
public override object GetEntity(Uri absoluteUri, string role, Type ofObjectToReturn)
しかし、それによって課せられる他の問題があります...絶対URIが常に有効であるとは限らず、XInclusiveReaderがそれを試みて検証するためです。