Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml文档(19,10)输入格式不正确时出错_Xml_Vb.net_Serialization - Fatal编程技术网

Xml文档(19,10)输入格式不正确时出错

Xml文档(19,10)输入格式不正确时出错,xml,vb.net,serialization,Xml,Vb.net,Serialization,我在my planets.xml中没有任何错误的位置收到输入流格式不正确的xml错误。Visual Studio 2017 4.7框架。已安装WCF。(IDE中的错误)使用streamreader加载xml时,在子类型字段的位置19,10处出现错误。(inside planets.xml)刚刚在xmlreader中尝试了这一点,新的错误是位置18,35,它是spectrum和Class(一个单词)之间的结束标记。我迷路了,在这里和网络上的其他票通常你可以立即在他们的xml文件中看到错误,但是没有

我在my planets.xml中没有任何错误的位置收到输入流格式不正确的xml错误。Visual Studio 2017 4.7框架。已安装WCF。(IDE中的错误)使用streamreader加载xml时,在子类型字段的位置19,10处出现错误。(inside planets.xml)刚刚在xmlreader中尝试了这一点,新的错误是位置18,35,它是spectrum和Class(一个单词)之间的结束标记。我迷路了,在这里和网络上的其他票通常你可以立即在他们的xml文件中看到错误,但是没有任何东西会因为我的问题而跳出来

Planets.xml(短片段,3146个Planets)


在重新键入错误位置行,然后注意到上面和下面的行之后,我已经设置为接受Char,我想序列化不喜欢它。将这些更改为字符串

<System.Xml.Serialization.XmlElementAttribute("spectralClass", GetType(String))>
Public Property spectralClass() As String

<System.Xml.Serialization.XmlElementAttribute("subtype", GetType(Integer))>
Public Property subtype() As Integer

<System.Xml.Serialization.XmlElementAttribute("luminosity", GetType(String))>
Public Property luminosity() As String

公共属性spectralClass()作为字符串
公共属性子类型()为整数
公共属性luminosity()作为字符串

然后开始给我新的错误位置,发现谁输入了不同行星的一些真字段,有时会被键入“真、真或真”,这些字段出错,所以必须将它们全部改为真。现在它工作得很好,为我写了一个更完整的planets.xml。非常感谢你们,现在我可以再次在这方面取得进展了

Ok在重新键入错误位置行,然后注意到上面和下面的行之后,我已经设置为接受Char,我想序列化不喜欢它。将这些更改为字符串

<System.Xml.Serialization.XmlElementAttribute("spectralClass", GetType(String))>
Public Property spectralClass() As String

<System.Xml.Serialization.XmlElementAttribute("subtype", GetType(Integer))>
Public Property subtype() As Integer

<System.Xml.Serialization.XmlElementAttribute("luminosity", GetType(String))>
Public Property luminosity() As String

公共属性spectralClass()作为字符串
公共属性子类型()为整数
公共属性luminosity()作为字符串

然后开始给我新的错误位置,发现谁输入了不同行星的一些真字段,有时会被键入“真、真或真”,这些字段出错,所以必须将它们全部改为真。现在它工作得很好,为我写了一个更完整的planets.xml。非常感谢你们,现在我可以再次在这方面取得进展了

您的问题是
Char
类型属性。虽然xml数据在这些属性中只有一个字母,但它是一个
字符串。数据值必须是表示UTF-8字符的整数

i、 e.
F
应该是
70


将所有
Char
类型属性更改为
String
类型可能更容易。

您的问题是
Char
类型属性。虽然xml数据在这些属性中只有一个字母,但它是一个
字符串。数据值必须是表示UTF-8字符的整数

i、 e.
F
应该是
70


将所有
Char
类型属性更改为
String
类型可能会更容易。

与您的问题无关,但您可以通过不提供Get和Set(或End属性)来简化所有属性。VB将为您创建私有成员,并将其命名为与属性相同的名称,但带有前导下划线。(例如,公共属性Blah as String将创建一个隐含的_Blah变量)我也没有发现XML有任何问题。你确定你正在读取的文件实际上与你正在显示的文件是一样的吗?哦,整洁,如果没有所有的get和set'r,那么键入就要少得多。我甚至需要在每个属性上面进行所有序列化吗?我以前没有这些,并将它们添加回(将xml粘贴为类生成一个完整的表和我无法访问的内容),以尝试实现这一点,但没有任何更改。是的,我只是仔细检查了一下,这正是我告诉它要读取的xml文件。这对我来说毫无意义。xml文件的编码可能是错误的。用记事本打开xml。然后尝试执行另存为,并在“另存为”对话框中检查编码类型。它应该设置为utf8。好的,所以在记事本++中,我选择了整个文档,并将所有选项卡更改为空格(4/tab),然后重试,19、10仍然出错。将其更改为使用XmlReader,设置为忽略空白和注释,出现相同错误。刚才测试了您的建议@jdweng(notepad++在另存为时没有编码选项),所以使用普通记事本打开并使用UTF-8保存,同样的错误也会发生。在Notepad++中重新打开,并说文档编码为UTF-8-BOM,所以将其更改回UTF-8。我将尝试将它保存为文本,并查看它的作用。与您的问题无关,但您可以通过不提供Get和Set(或End属性)来简化所有属性。VB将为您创建私有成员,并将其命名为与属性相同的名称,但带有前导下划线。(例如,公共属性Blah as String将创建一个隐含的_Blah变量)我也没有发现XML有任何问题。你确定你正在读取的文件实际上与你正在显示的文件是一样的吗?哦,整洁,如果没有所有的get和set'r,那么键入就要少得多。我甚至需要在每个属性上面进行所有序列化吗?我以前没有这些,并将它们添加回(将xml粘贴为类生成一个完整的表和我无法访问的内容),以尝试实现这一点,但没有任何更改。是的,我只是仔细检查了一下,这正是我告诉它要读取的xml文件。这对我来说毫无意义。xml文件的编码可能是错误的。用记事本打开xml。然后尝试执行另存为,并在“另存为”对话框中检查编码类型。它应该设置为utf8。好的,所以在记事本++中,我选择了整个文档,并将所有选项卡更改为空格(4/tab),然后重试,19、10仍然出错。将其更改为使用XmlReader,设置为忽略空白和注释,出现相同错误。刚才测试了您的建议@jdweng(notepad++在另存为时没有编码选项),所以使用普通记事本打开并使用UTF-8保存,同样的错误也会发生。
Imports System.IO
Imports System.Xml
Imports System.Xml.Serialization

Class objPlanets

    Private Sub serialPlanets()

        Dim serial As New XmlSerializer(GetType(Planets))
        Dim p As Planets
        Dim reader As XmlReader = XmlReader.Create(My.Application.Info.DirectoryPath & "\Planets\planets.xml")
        Do While reader.Read()

            p = serial.Deserialize(reader)

        Loop
        reader.Close()

        For Each planet In p.planet()

            If planet.axis() = String.Empty Then

                planet.axis = getAxis()

            Else

                Continue For

            End If

        Next

        Using fs As New FileStream(My.Application.Info.DirectoryPath & "\Planets\planets.xml", FileMode.Truncate)

            serial.Serialize(fs, p)

        End Using

    End Sub

    Private Function getAxis() As String

        Select Case roll2D6()

            Case 2 To 6

                Return "Tilted"

            Case 7 To 12

                Return "No Tilt"

            Case Else

                Return "Error"

        End Select

    End Function

    Private Function getOrbit() As String

        Select Case roll2D6()

            Case 2 To 6

                Return "Elliptical"

            Case 7 To 12

                Return "Circular"

            Case Else

                Return "Error"

        End Select

    End Function

    Private Function roll2D6() As Integer

        Dim rollResult1 As Integer = CInt((Rnd() * 5) + 1)
        Dim rollResult2 As Integer = CInt((Rnd() * 5) + 1)
        Return rollResult1 + rollResult2

    End Function

    Public Sub New()

        serialPlanets()

    End Sub

End Class
<System.Xml.Serialization.XmlElementAttribute("spectralClass", GetType(String))>
Public Property spectralClass() As String

<System.Xml.Serialization.XmlElementAttribute("subtype", GetType(Integer))>
Public Property subtype() As Integer

<System.Xml.Serialization.XmlElementAttribute("luminosity", GetType(String))>
Public Property luminosity() As String