0

所以我有 XSLT 代码(它是正确的,它是单独测试的)并且我把它硬编码为一个字符串(这是一个要求,不要问)。加载 XML、XSLT 和所有这些东西都可以。

但是当我使用 XmlDocument 作为第一个参数时,XmlCompiledTransform.Transform()我得到了关于White space handling.

然后我使用 XmlReader 作为第一个参数,这有效,但是当我尝试保存转换后的文件时出现异常,异常是Invalid XML document. The document does not have a root element.

这是代码:

    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()

PS我想转换原始文档并将其值传递给另一个xmlDocument并保存它。(或者如果我可以转换并保存同一个对象,那没关系。我愿意接受建议)。

所以我需要以某种方式获取阅读器的价值并将其保存为 XML 文档或类似的东西,我不确定......

4

1 回答 1

1

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

试试这个

于 2013-05-28T07:39:52.087 回答