1

我正在尝试使用以下代码行进行一些 XSLT 转换,将 XML 转换为 XML。当我尝试从转换后的 XML 创建 XMLDocument 对象时,出现错误

根级别的数据无效。第 1 行,位置 1。

 Dim outputXML As New XmlDocument

        Dim stream As New MemoryStream
        Dim writer As XmlTextWriter = New XmlTextWriter(stream, System.Text.UnicodeEncoding.UTF8)

        Dim navigator As XPathNavigator = illustratePlusXML.CreateNavigator()
        Dim transormer As XslCompiledTransform = New XslCompiledTransform()
        transormer.Load(ConfigurationManager.AppSettings("XSLT_File_Path"))
        transormer.Transform(navigator, Nothing, writer)

        Dim output As String = System.Text.UnicodeEncoding.UTF8.GetString(stream.ToArray())
        outputXML.LoadXml(output)

        Return outputXML

我可以找到一个特殊字符(方形框),我认为这是导致错误的原因。附加的输出 xml 的快照。有人可以建议吗?

输出带有特殊字符的xml

4

1 回答 1

2

如果您想填充XmlDocumentXSLT 转换的结果,那么只需执行

Dim resultDoc As New XmlDocument()
Using xw As XmlWriter = resultDoc.CreateNavigator().AppendChild()
        Dim navigator As XPathNavigator = illustratePlusXML.CreateNavigator()
        Dim transormer As XslCompiledTransform = New XslCompiledTransform()
        transormer.Load(ConfigurationManager.AppSettings("XSLT_File_Path"))
        transormer.Transform(navigator, Nothing, xw)  
        xw.Close()
End Using

无需使用 MemoryStream。如果您真的认为您需要使用 MemoryStream,请确保在调用该方法之前将其重置Position为。0Load

于 2012-12-10T13:08:39.087 回答