2

XMLをWebApiPOSTメソッドにPOSTして逆シリアル化しようとしています。複数の子ノードを持つノードを除いて、すべてが正常に機能し、正常に逆シリアル化されます。

コードは次のようになります。

[Serializable]
public class grandparentnode
{
    [XmlElement]
    public parentnode[] parentnode { get; set; }
}

[Serializable]
public class parentnode
{
    public childnode childnode { get; set; }
}

[Serializable]
public class childnode
{
    public string foo { get; set; }
    public string bar { get; set; }
    public string baz { get; set; }
}

これはXMLです:

<grandparentnode>
    <parentnode>
        <childnode>
            <foo>1</foo>
            <bar>2</bar>
            <baz>3</baz>
        </childnode>
        <childnode>
            <foo>4</foo>
            <bar>5</bar>
            <baz>6</baz>
        </childnode>
        <childnode>
            <foo>7</foo>
            <bar>8</bar>
            <baz>9</baz>
        </childnode>
    </parentnode>
</grandparentnode>

問題は、デバッグ時に、次のparentnode[]ように、配列内の1つのアイテムしか取得できないことです{WebApiListener.Controllers.FooBarBazController.parentnode[1]}。子ノードオブジェクトの配列として親ノードが必要になります。

なぜですか?

ありがとう、
ピーター

4

1 に答える 1

1

ユーザー@Joboが指摘したように、配列を逆シリアル化する順序を混同しました。

これは変更されたコードです:

[Serializable]
public class grandparentnode
{
    public parentnode parentnode { get; set; }
}

[Serializable]
public class parentnode
{
    [XmlElement]
    public childnode[] childnode { get; set; }
}

[Serializable]
public class childnode
{
    public string foo { get; set; }
    public string bar { get; set; }
    public string baz { get; set; }
}
于 2013-01-02T10:54:07.570 に答える