1

次のコード行を使用して、XML を XML に変換するために XSLT 変換を実行しようとしています。変換された 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 に答える