protected override void ReadXmlBase(System.Xml.XmlReader reader) { base.ReadXmlBase(reader); if (reader.LocalName == "items") { LocatableList<Element> items = new LocatableList<Element>(); do { Element element = new Element(); element.ReadXml(reader); element.Parent = this; items.Add(element); // Added checking on reader.NodeType == Element is because ItemList xml instance // is something like: <items> <items xsi:type='ELEMENT'>..</items></items>. // After reading all element contents, the reader.LocalName is still items, // but the reader NodeType is EndElement. This situation is similar as Section, ItemTable } while (reader.LocalName == "items" && reader.NodeType == System.Xml.XmlNodeType.Element); this.items = items; } reader.MoveToContent(); }