Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Compile抛出空异常_C#_.net_Xml_Xslt - Fatal编程技术网

C# Compile抛出空异常

C# Compile抛出空异常,c#,.net,xml,xslt,C#,.net,Xml,Xslt,我编写了上述代码函数,将XLST2.0样式表应用于xml并返回xml。 我试图修改XMLPrime示例,但出于某种原因,该行: public static SqlXml XMLPrimeTransform(SqlXml inputDataXML, SqlXml inputTrasnformXML) { MemoryStream ms = new MemoryStream(); XmlReader inxml = inputDataXML.CreateReader(); X

我编写了上述代码函数,将XLST2.0样式表应用于xml并返回xml。 我试图修改XMLPrime示例,但出于某种原因,该行:

public static SqlXml XMLPrimeTransform(SqlXml inputDataXML, SqlXml inputTrasnformXML)
{
    MemoryStream ms = new MemoryStream();
    XmlReader inxml = inputDataXML.CreateReader();
    XmlReader intrans = inputTrasnformXML.CreateReader();

    XmlReaderSettings xmlreadersettings = new XmlReaderSettings { NameTable = intrans.NameTable };

    XdmDocument document= new XdmDocument(inxml);

    XmlPrime.XsltSettings xsltSettings = new XmlPrime.XsltSettings(intrans.NameTable) { ContextItemType = XdmType.Node };

    var xslt = Xslt.Compile(intrans, xsltSettings);
    //var xslt = Xslt.Compile(inputTrasnformXML.CreateReader());

    var contextItem = document.CreateNavigator();
    var settings = new DynamicContextSettings { ContextItem = contextItem };

    xslt.ApplyTemplates(settings, ms);

    return new SqlXml(ms);
}

正在引发NullReferenceException。内部网和XSLT设置都不为空。有人有幸用XMLPrime或其他库来实现这一点吗

这可能是特定于正在加载的样式表的错误。尝试使用最小样式表,看看是否如此。如果您认为这是XmlPrime中的一个bug,联系开发人员并提供重现问题的Visual Studio解决方案。

您在哪里声明和初始化您试图调用其
Compile
方法的
Xslt
对象?在转换之后和构造的SqlXml值之前,可能还需要设置
ms.Position=0
Compile是XSLT的一种静态方法。相同的样式表和XML在SAXON中工作得很好。我会试着与开发商签约
 var xslt = Xslt.Compile(intrans, xsltSettings);