我正在尝试编写一个使用Microsoft的XMLGen库的函数,以便根据提供的Schema生成XML文档。 For reference, I was trying to follow the project on this MSDN page.
我最终将项目翻译成Visual Basic,而代码构建正常,它会在运行时抛出异常; “在XmlWriter.Create()
期间无法转换'System.Xml.XmlWellFormedWriter'类型的对象我认为XmlWriter.Create()方法创建了一个新的XmlWriter实例,因此我不确定它为什么要尝试转换XmlWellFormedWriter。
Public Function CreateXmlFromSchema(sender As Object, e As EventArgs) Handles ToolStripMenuItem.Click
Dim fDialog As SaveFileDialog = New SaveFileDialog
fDialog.Filter = "XML Document (.xml)|*.xml"
If (fDialog.ShowDialog() = DialogResult.OK) Then
Dim xStringWriter As New StringWriter()
Dim xTextWriter As XmlTextWriter = New XmlTextWriter(xStringWriter)
Try
xTextWriter = XmlWriter.Create("myTextXML.xml")
xTextWriter.Formatting = Formatting.Indented
Dim xQualifiedName As XmlQualifiedName = New XmlQualifiedName("envelope", "mySchema.xsd")
Dim xSampleGen As XmlSampleGenerator = New XmlSampleGenerator("mySchema.xsd", xQualifiedName)
xSampleGen.WriteXml(xTextWriter)
Catch ex As Exception
MessageBox.Show(ex.Message)
MessageBox.Show("Stack Trace: " & vbCrLf & ex.StackTrace)
Finally
xTextWriter.Flush()
xTextWriter.Close()
End Try
End If
Return True
End Function
我不知道出了什么问题,但是我们将非常感谢任何帮助。
如果有一种基于模式创建XML文件的不同/更好的方法,我会全力以赴。我对使用XML库比较陌生,并且没有接受任何正式培训。
答案 0 :(得分:0)
您没有提供XmlSampleGenerator类,但是这可以让您通过不使用StringWriter来超越当前错误:
Dim settings As New XmlWriterSettings
settings.Indent = True
Dim xTextWriter As XmlWriter = XmlWriter.Create("myTextXML.xml", settings)
Dim xQualifiedName As XmlQualifiedName = New XmlQualifiedName("envelope", "mySchema.xsd")
Dim xSampleGen As XmlSampleGenerator = New XmlSampleGenerator("mySchema.xsd", xQualifiedName)
xSampleGen.WriteXml(xTextWriter)