【发布时间】:2011-10-26 17:02:31
【问题描述】:
在我正在处理的一个项目中,我获得了 XML 来处理我无法控制的问题。我需要提取一个节点数组以及作为数组兄弟的奇异属性。 (请参阅下面的示例 XML)
<pagination>
<total-pages>1</total-pages>
<page position="first">?i=1;q=gloves</page>
<page position="last">?i=1;q=gloves</page>
<page position="1" selected="true">?i=1;q=gloves</page>
</pagination>
在上面的示例中,我需要将 total-pages 节点提取为 int 并创建一个页面节点数组。我有反序列化器工作的基础知识我只需要知道如何设置我的类以允许我拉出数组和 int。如果我在主课中执行以下操作:
[XmlArray("pagination")]
[XmlArrayItem("page", typeof(ResultsPage))]
public ResultsPage[] Pages { get; set; }
[XmlElement(ElementName = "total-pages")]
public int TotalPages { get; set; }
我得到了页面节点的数组,但是 TotalPages 是 0 而不是 1。我还在我的主类中尝试了以下内容:
[XmlElement(ElementName = "pagination")]
public Pagination Pagination { get; set; }
有一个子类
public class Pagination
{
[XmlArray]
[XmlArrayItem("page", typeof(ResultsPage))]
public ResultsPage[] Pages { get; set; }
[XmlElement(ElementName = "total-pages")]
public int TotalPages { get; set; }
}
在这种情况下,TotalPages 正确设置为 1,但 Pages 数组为空。
有没有办法做到这一点?
【问题讨论】:
-
感谢您的评论,但正如我所说,我了解反序列化的基本概念,只是询问上述是否可行。
标签: c# xml xml-deserialization