【发布时间】:2013-12-19 08:52:19
【问题描述】:
我需要反序列化以下 XML:
<TIMEWINDOWS>
<NUMBER>10</NUMBER>
<NO0>
<FROM>22-11-2013 08:00:00</FROM>
<TO>22-11-2013 11:59:00</TO>
</NO0>
<NO1>
<FROM>22-11-2013 12:00:00</FROM>
<TO>22-11-2013 15:59:00</TO>
</NO1>
<NO2>
<FROM>23-11-2013 08:00:00</FROM>
<TO>23-11-2013 11:59:00</TO>
</NO2>
<NO3>
<FROM>23-11-2013 12:00:00</FROM>
<TO>23-11-2013 15:59:00</TO>
</NO3>
...
</TIMEWINDOWS>
我需要的输出是TimeWindow 对象的集合(列表、数组等),例如:
public class TimeWindow
{
public string From { get; set; }
public string To { get; set; }
}
是否有处理NO0、NO1、NO2、...元素的标准方法?
我总是可以构建自己的解析器,但我更喜欢使用标准方法,例如System.Xml.Serialization.XmlSerializer。
【问题讨论】:
-
每个元素的名称指定它的类型(其内容的格式)。您对同一类型使用不同的名称。你能有更多或更少的 4 个
<NOx>项目吗? -
问题正是元素的名称不一致。我无法控制 XML,因为我从第三方服务接收它。理论上可以有无限数量的元素 - 尽管通常会有 5-20 个元素。
-
<NUMBER>10</NUMBER>是否指定了<NOx>节点的数量? -
附带说明,当问题明确指出@ThomasJørgensen 能够编写自定义解析器但想知道时,我真的不明白为什么所有答案都集中在 解析如果已经存在针对这种特殊情况的“预建”机制。
-
@AndreiV 有答案明确指出没有可用的机制,因为格式是循环的。
标签: c# xml xml-parsing xml-deserialization