1

xml属性をクラスプロパティに逆シリアル化するのに問題があります。

<?xml version="1.0" encoding="UTF-8" ?> 
<Ball clientid="xyz">
    <Name>Tommy</Name>
    <ballColor transactionid="1234">White</ballColor>
    <radius>9</radius>
    <PowerLevel>9001</PowerLevel>
    <RandomProp>This is another property</RandomProp>
</Ball>

私が使用しているXMLは...そして今、私が持っているコードを投稿します。問題は、clientidをプロパティに取得できますが、'transactionid'を取得できないため、子要素の属性を引き出すのに問題があります。

Imports System.Xml.Serialization
Public Class Ball
    Inherits ballColor
    Public Property Name As String
    Public Property radius As Double
    Public Property PowerLevel As String
    Public Property RandomProp As String
    <XmlAttribute("clientid")> Public Property clientid() As String


    Public Sub New()

    End Sub


End Class
<XmlRoot("Ball")>
Public Class ballColor
    <XmlElement("ballColor")> Public Property ballColor As String
    <XmlAttribute("transactionid")> Public Property transactionid As String
    Public Sub New()

    End Sub
End Class

したがって、フォームで実際の逆シリアル化呼び出しがありますが、これを実行すると、transactionid以外のすべてのプロパティが文字通り正しく入力されるため、これは私の問題ではないようです。私は何が間違っているのですか?

4

2 に答える 2

3

私はむしろballColorをball内のプロパティとして使用したいと思います。以下でこれを試してください。

<Serializable>
<XmlRoot("Ball")>
Public Class Ball
    Public Property Name As String
    Public Property radius As Double
    Public Property PowerLevel As String
    Public Property RandomProp As String
    <XmlAttribute("clientid")> Public Property clientid() As String
    Public Property ballColor As ballColor

    Public Sub New()
        ballColor = New ballColor
    End Sub

End Class

<Serializable>
Public Class ballColor
    <XmlText> Public Property ballColor As String
    <XmlAttribute("transactionid")> Public Property transactionid As String

    Public Sub New()

    End Sub
End Class
于 2013-03-26T15:13:22.760 に答える
1

ballColorクラスを次のように変更します。

Public Class ballColor

    <XmlAttribute("transactionid")> 
    Public Property transactionid As String   

    <XmlText> 
    Public Property Value As String
End Class

これにより、属性transactionid値がフィールドに格納されballcolor.transactionidballcolor値がballcolor.valueフィールドに格納されます

メインボールクラスを変更する

Public Class Ball
  Public Property Name As String
    Public Property radius As Double
    Public Property PowerLevel As String
    Public Property RandomProp As String
    <XmlAttribute("clientid")> Public Property clientid() As String
    Public Property _ballColor As ballColor
End Class
于 2013-03-26T14:54:57.503 に答える