无法在VB.net中使用XSLT转换XML

无法在VB.net中使用XSLT转换XML,xml,vb.net,xslt,xslt-1.0,Xml,Vb.net,Xslt,Xslt 1.0,因此,我有XSLT代码(它是正确的,单独测试),并将其硬编码为字符串(这是一个要求,不用麻烦问)。加载XML、XSLT和所有这些东西都没问题 但是当我在xmlcomiledtransform.Transform()中使用XmlDocument作为第一个参数时,我得到了关于空白处理的异常 然后,我使用XmlReader作为第一个参数,这是可行的,但当我试图保存转换后的文件时,出现异常,异常是无效的XML文档。文档没有根元素。 代码如下: Dim xsltTransformerCode As

因此,我有XSLT代码(它是正确的,单独测试),并将其硬编码为字符串(这是一个要求,不用麻烦问)。加载XML、XSLT和所有这些东西都没问题

但是当我在
xmlcomiledtransform.Transform()
中使用XmlDocument作为第一个参数时,我得到了关于
空白处理的异常

然后,我使用XmlReader作为第一个参数,这是可行的,但当我试图保存转换后的文件时,出现异常,异常是
无效的XML文档。文档没有根元素。

代码如下:

    Dim xsltTransformerCode As New xsltTransformCode()
    Dim myXmlDoc As New XmlDocument()
    Dim resultXmlDoc As New XmlDocument()
    Dim sr As New StringReader(xsltTransformerCode.transformationXSLTcode())
    Dim xr As XmlReader = XmlReader.Create(sr)
    Dim xsltTransCompiled As New XslCompiledTransform()

    'write the stringified xslt code to file, in order to check its validity manually'
    File.WriteAllText("C:\Users\gk\Desktop\tempXSLTcode.xsl", xsltTransformerCode.transformationXSLTcode())
    'load the xml string taken from the database'
    myXmlDoc.Load("C:\Users\gk\Desktop\XTilbud.xml")
    'load the stylesheet'
    xsltTransCompiled.Load(xr)

    Using xw As XmlWriter = resultXmlDoc.CreateNavigator().AppendChild()
        xsltTransCompiled.Transform(myXmlDoc, Nothing, xw)
        xw.Close()
    End Using

    resultXmlDoc.Save("C:\Users\gk\Desktop\myXMLfile.xml")

    sr.Dispose()
    sr.Close()
    xr.Close()
另外,我想转换原始文档并将其值传递给另一个xmlDocument并保存它。(或者,如果我可以变换并保存同一个对象,那就没关系了。我愿意听取建议)


因此,我需要的是以某种方式获取读取器的值,并将其保存为XML文档或类似的smth,我不确定…

对于这种情况,您的代码有点过于复杂


试试。

如果希望转换结果为
C:\Users\gk\Desktop\myXMLfile.xml
,为什么要首先尝试创建
XmlDocument
,为什么不简单地使用
Transform
方法的重载,该方法采用
FileStream
XmlWriter
(例如,
使用xw作为XmlWriter=XmlWriter.Create(“C:\Users\gk\Desktop\myXMLfile.xml”,xsltTransCompiled.OutputSettings)xsltTransCompiled.Transform(myXmlDoc,Nothing,xw)结束使用
)?我最初的目的是将应用的XSLT转换的结果保存到xml文档(对象)中我现在用
.Save()做的事情
只是出于测试目的,检查转换是否成功。顺便说一句,我尝试了你的方法,现在我新创建的XML是空的……我们需要查看样式表代码和输入XML示例。我认为问题不在于XML和XSLT,而在于
resultXmlDoc
这就是我得到的
无效XML文档的原因。该文档没有根元素,因为它实际上是空的。