private void RequireNoXsiType(IXmlKnownType knownType) { if (knownType.XsiType != XmlName.Empty) { throw Error.CannotSetAttribute(this); } }
private XmlName GetEffectiveName(IXmlKnownType knownType, XmlNode parent) { var name = knownType.Name; return(name.NamespaceUri != null ? name : name.WithNamespaceUri(parent != null ? parent.NamespaceURI : string.Empty)); }
private void ConfigureIncludedTypes(IXmlKnownType knownType) { var includedTypes = Context.GetIncludedTypes(knownType.ClrType); foreach (var include in includedTypes) { AddKnownType(knownType.Name, include.XsiType, include.ClrType, false); } }
private void CreateAttribute(IXmlKnownType knownType, XmlNode position) { RequireNoXsiType(knownType); var parent = node; var name = GetEffectiveName(knownType, parent); var attribute = CreateAttributeCore(parent, name); parent.Attributes.InsertBefore(attribute, (XmlAttribute)position); state = State.Attribute; }
private void CreateElement(IXmlKnownType knownType, XmlNode position) { var parent = node; var name = GetEffectiveName(knownType, parent); var element = CreateElementCore(parent, name); parent.InsertBefore(element, position); state = State.Element; if (knownType.XsiType != XmlName.Empty) { this.SetXsiType(knownType.XsiType); } }
private void CoerceAttribute(IXmlKnownType knownType) { RequireNoXsiType(knownType); var oldNode = (XmlAttribute)node; var parent = oldNode.OwnerElement; var name = GetEffectiveName(knownType, parent); if (!XmlNameComparer.Default.Equals(this.Name, name)) { var newNode = CreateAttributeCore(parent, name); var attributes = parent.Attributes; attributes.RemoveNamedItem(newNode.LocalName, newNode.NamespaceURI); attributes.InsertBefore(newNode, oldNode); attributes.Remove(oldNode); } }
private void CoerceElement(IXmlKnownType knownType) { var oldNode = (XmlElement)node; var parent = oldNode.ParentNode; var name = GetEffectiveName(knownType, parent); if (!XmlNameComparer.Default.Equals(this.Name, name)) { var newNode = CreateElementCore(parent, name); parent.ReplaceChild(newNode, oldNode); if (knownType.XsiType != XmlName.Empty) { this.SetXsiType(knownType.XsiType); } } else { this.SetXsiType(knownType.XsiType); } }
public bool TryGet(Type clrType, out IXmlKnownType knownType) { return(IsMatch(clrType) ? Try.Success(out knownType, this) : Try.Failure(out knownType)); }
public bool TryGet(IXmlIdentity xmlName, out IXmlKnownType knownType) { return(IsMatch(xmlName) ? Try.Success(out knownType, this) : Try.Failure(out knownType)); }
private XmlName GetEffectiveName(IXmlKnownType knownType, XmlNode parent) { var name = knownType.Name; return name.NamespaceUri != null ? name : name.WithNamespaceUri ( parent != null ? parent.NamespaceURI : string.Empty ); }
private void RequireNoXsiType(IXmlKnownType knownType) { if (knownType.XsiType != XmlName.Empty) throw Error.CannotSetAttribute(this); }
private void CreateAttribute(IXmlKnownType knownType, XmlNode position) { RequireNoXsiType(knownType); var parent = node; var name = GetEffectiveName(knownType, parent); var attribute = CreateAttributeCore(parent, name); parent.Attributes.InsertBefore(attribute, (XmlAttribute) position); state = State.Attribute; }
private void CreateElement(IXmlKnownType knownType, XmlNode position) { var parent = node; var name = GetEffectiveName(knownType, parent); var element = CreateElementCore(parent, name); parent.InsertBefore(element, position); state = State.Element; if (knownType.XsiType != XmlName.Empty) this.SetXsiType(knownType.XsiType); }
private void CoerceAttribute(IXmlKnownType knownType) { RequireNoXsiType(knownType); var oldNode = (XmlAttribute) node; var parent = oldNode.OwnerElement; var name = GetEffectiveName(knownType, parent); if (!XmlNameComparer.Default.Equals(this.Name, name)) { var newNode = CreateAttributeCore(parent, name); var attributes = parent.Attributes; attributes.RemoveNamedItem(newNode.LocalName, newNode.NamespaceURI); attributes.InsertBefore(newNode, oldNode); attributes.Remove(oldNode); } }
private void CoerceElement(IXmlKnownType knownType) { var oldNode = (XmlElement) node; var parent = oldNode.ParentNode; var name = GetEffectiveName(knownType, parent); if (!XmlNameComparer.Default.Equals(this.Name, name)) { var newNode = CreateElementCore(parent, name); parent.ReplaceChild(newNode, oldNode); if (knownType.XsiType != XmlName.Empty) this.SetXsiType(knownType.XsiType); } else this.SetXsiType(knownType.XsiType); }