2009-05-27 5 views
0

Donc, j'essaie d'utiliser XMLResolver pour charger un fichier xml. Cela fonctionne bien quand je crée un xmlreader à partir d'un nom de fichier, mais échoue quand je le fais en utilisant un lecteur de chaîne. Il me donne une XslLoadException: XSLT compiler error. L'exception intérieure est "An entry with the same key already exists."Erreurs XMLResolver Compile

public override object GetEntity(Uri absoluteUri, string role, Type ofObjectToReturn) 
    { 
     string f = Path.Combine(@"C:\tmp", Path.GetFileName(absoluteUri.ToString())); 
     string testaxCont = @"<xsl:stylesheet xmlns:xsl=""http://www.w3.org/1999/XSL/Transform"" version=""1.0""><xsl:template name=""J""/></xsl:stylesheet>"; 
     string testaxCont2 = File.ReadAllText(f); 
     bool j = testaxCont.Equals(testaxCont2); //This equals true 
     XmlReader tmp = XmlReader.Create(new StringReader(File.ReadAllText(f))); //crash 
//   XmlReader tmp = XmlReader.Create(f); //don't crash 
     return tmp; 
    } 

testax.xslt  
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"><xsl:include href="testax2.xsl" /></xsl:stylesheet> 

testax2.xsl 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"><xsl:template name="J"/></xsl:stylesheet> 

Répondre

2

je devais changer la ligne brisée à XmlReader tmp = XmlReader.Create(new StringReader(File.ReadAllText(f)),null,f); Avec un fichier, il a une URI de base mais avec une chaîne, il manque.