private void InternalReadElement(XElementData reader, object receiver, ReadSettings settings, QName root, ObjectElementInfo elements, string modelName) { foreach (var item in reader.Current.Elements()) { QName name = item.Name.ToQName(); ObjectPropertyInfo element = elements.GetObjectPerpertyInfo(name, () => reader.Current.Attribute(ToolkitConst.VERSION).Value); if (element != null) { XElementData next = new XElementData { Current = item, Root = reader.Root }; element.Attribute.ReadObject(this, next, receiver, settings, element, null); } else { element = SerializerUtil.CustomRead(receiver, name.LocalName, modelName, () => reader.Current.Attribute(ToolkitConst.VERSION).Value); if (element != null) { element.Attribute.ReadObject(this, reader, receiver, settings, element, null); } } } }
//private void InternalWriteXml(object writer, object receiver, string modelName, // WriteSettings settings, PrefixTable prefixTable) //{ //} private void InternalReadElement(XmlReader reader, object receiver, ReadSettings settings, QName root, ObjectElementInfo elements, string modelName) { while (reader.Read()) { XmlNodeType nodeType = reader.NodeType; if (nodeType == XmlNodeType.EndElement) { QName name = QName.Get(reader); if (name == root) { break; } } if (nodeType == XmlNodeType.Element) { QName name = QName.Get(reader); ObjectPropertyInfo element = elements.GetObjectPerpertyInfo(name, () => reader.GetAttribute(ToolkitConst.VERSION)); if (element != null) { element.Attribute.ReadObject(this, reader, receiver, settings, element, null); } else { element = SerializerUtil.CustomRead(receiver, name.LocalName, modelName, () => reader.GetAttribute(ToolkitConst.VERSION)); if (element != null) { element.Attribute.ReadObject(this, reader, receiver, settings, element, null); } } } } }