internal void SetElement(XName name, object value, bool addToExisting, XmlSchemaDatatype datatype, Type elementBaseType) { XElement parentElement = this.GetUntyped(); CheckXsiNil(parentElement); if (value == null) { //Delete existing node Debug.Assert(addToExisting == false); DeleteChild(name); } else { IXMetaData schemaMetaData = this as IXMetaData; //Get parent's content model Debug.Assert(schemaMetaData != null); ContentModelEntity cm = schemaMetaData.GetContentModel(); if (elementBaseType == null) { if (!schemaMetaData.LocalElementsDictionary.TryGetValue(name, out elementBaseType)) { elementBaseType = value?.GetType(); } } cm.AddElementToParent(name, value, parentElement, addToExisting, datatype, elementBaseType); } }
internal void SetElement(XName name, object value, bool addToExisting, XmlSchemaDatatype datatype) { XElement parentElement = this.GetUntyped(); this.CheckXsiNil(parentElement); if (value != null) { IXMetaData schemaMetaData = this; Debug.Assert(schemaMetaData != null); schemaMetaData.GetContentModel().AddElementToParent(name, value, parentElement, addToExisting, datatype); } else { Debug.Assert(!addToExisting); this.DeleteChild(name); } }
internal void SetElement(XName name, object value, bool addToExisting, XmlSchemaDatatype datatype) { XElement parentElement = this.GetUntyped(); CheckXsiNil(parentElement); if (value == null) { //Delete existing node Debug.Assert(addToExisting == false); DeleteChild(name); } else { IXMetaData schemaMetaData = this as IXMetaData; //Get parent's content model Debug.Assert(schemaMetaData != null); ContentModelEntity cm = schemaMetaData.GetContentModel(); cm.AddElementToParent(name, value, parentElement, addToExisting, datatype); } }