2

我正在尝试通过将 XML POST 到 WebApi 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[]问题是,在调试时,我得到的只是数组中的一项,如下所示{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 回答