所以,我正在尝试使用XMLResolver加载xml文件。当我从文件名创建一个xmlreader但它在使用stringreader时失败时,它工作正常。它给了我一个XslLoadException: XSLT compiler error.
内部异常是"An entry with the same key already exists."
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>
答案 0 :(得分:2)
我需要将断行更改为XmlReader tmp = XmlReader.Create(new StringReader(File.ReadAllText(f)),null,f);
对于一个文件,它有一个基本URI,但是缺少一个字符串。