如何在没有复数父元素的情况下从xml反序列化列表?

时间:2011-12-07 19:35:03

标签: c# xml-serialization

我想将HTML表反序列化为一个对象。但是使用以下代码,它希望<Rows>作为<tr>的父级,<Cells>作为<td>的父级。我想保留这个类结构。我错过了任何属性声明吗?

<table>
  <tr>
    <td></td>
    <td></td>
  </tr>
  <tr>
    <td></td>
    <td></td>
  </tr>
</table>

public class Table
{
    [XmlArrayItem("tr")]
    public List<Row> Rows { get; set; }
}

public class Row
{
    [XmlArrayItem("td")]
    public List<Cell> Cells { get; set; }
}

public class Cell
{
    public object Value { get; set; }
}

1 个答案:

答案 0 :(得分:5)

尝试设置属性,如下所示。请注意,您必须将Value课程Cell的类型从object更改为string

[XmlRoot("table")]
public class Table
{
    [XmlElement(typeof(Row), ElementName = "tr")]
    public List<Row> Rows { get; set; }
}

public class Row
{
    [XmlElement(typeof(Cell), ElementName = "td")]
    public List<Cell> Cells { get; set; }
}

public class Cell
{
    [XmlText(typeof(string))]
    public string Value { get; set; }
}