Есть быстрый вариант
Переопределите 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-код взят из
файл: // с: /myXMLRepository/myXML.xml
включает * inc.xml
теперь базовый URI - это файл // c: /temp/tmpA0.tmp
.
.
желаю вам удачи,
EDIT:
Есть еще один способ переопределить
public override object GetEntity(Uri absoluteUri, string role, Type ofObjectToReturn)
но есть и другая проблема, навязанная этим ... потому что Абсолютный URI не всегда будет действительным, и XInclusionReader попытается его проверить.