private XmlAttribute LoadDefaultAttribute() { Debug.Assert(_reader.IsDefault); XmlReader r = _reader; XmlAttribute attr = _doc.CreateDefaultAttribute(r.Prefix, r.LocalName, r.NamespaceURI); IXmlSchemaInfo schemaInfo = r.SchemaInfo; if (schemaInfo != null) { attr.XmlName = _doc.AddAttrXmlName(attr.Prefix, attr.LocalName, attr.NamespaceURI, schemaInfo); } LoadAttributeValue(attr, false); XmlUnspecifiedAttribute defAttr = attr as XmlUnspecifiedAttribute; // If user overrides CreateDefaultAttribute, then attr will NOT be a XmlUnspecifiedAttribute instance. if (defAttr != null) { defAttr.SetSpecified(false); } return(attr); }
public override XmlNode CloneNode(bool deep) { //CloneNode is deep for attributes irrespective of parameter XmlDocument doc = OwnerDocument; XmlUnspecifiedAttribute attr = (XmlUnspecifiedAttribute)doc.CreateDefaultAttribute(Prefix, LocalName, NamespaceURI); attr.CopyChildren(doc, this, true); attr._fSpecified = true; //When clone, should return the specifed attribute as default return(attr); }
private void ValidateAttributes(XmlElement elementNode) { XmlAttributeCollection attributes = elementNode.Attributes; XmlAttribute attr = null; for (int i = 0; i < attributes.Count; i++) { attr = attributes[i]; _currentNode = attr; //For nodeValueGetter to pick up the right attribute value if (Ref.Equal(attr.NamespaceURI, _nsXmlNs)) { //Do not validate namespace decls continue; } _validator.ValidateAttribute(attr.LocalName, attr.NamespaceURI, _nodeValueGetter, _attributeSchemaInfo); if (_psviAugmentation) { attr.XmlName = _document.AddAttrXmlName(attr.Prefix, attr.LocalName, attr.NamespaceURI, _attributeSchemaInfo); } } if (_psviAugmentation) { //Add default attributes to the attributes collection if (_defaultAttributes == null) { _defaultAttributes = new ArrayList(); } else { _defaultAttributes.Clear(); } _validator.GetUnspecifiedDefaultAttributes(_defaultAttributes); XmlSchemaAttribute schemaAttribute = null; XmlQualifiedName attrQName; attr = null; for (int i = 0; i < _defaultAttributes.Count; i++) { schemaAttribute = _defaultAttributes[i] as XmlSchemaAttribute; attrQName = schemaAttribute.QualifiedName; Debug.Assert(schemaAttribute != null); attr = _document.CreateDefaultAttribute(GetDefaultPrefix(attrQName.Namespace), attrQName.Name, attrQName.Namespace); SetDefaultAttributeSchemaInfo(schemaAttribute); attr.XmlName = _document.AddAttrXmlName(attr.Prefix, attr.LocalName, attr.NamespaceURI, _attributeSchemaInfo); attr.AppendChild(_document.CreateTextNode(schemaAttribute.AttDef.DefaultValueRaw)); attributes.Append(attr); XmlUnspecifiedAttribute defAttr = attr as XmlUnspecifiedAttribute; if (defAttr != null) { defAttr.SetSpecified(false); } } } }
private XmlAttribute LoadAttributeNodeDirect() { XmlReader r = _reader; XmlAttribute attr; if (r.IsDefault) { XmlUnspecifiedAttribute defattr = new XmlUnspecifiedAttribute(r.Prefix, r.LocalName, r.NamespaceURI, _doc); LoadAttributeValue(defattr, true); defattr.SetSpecified(false); return(defattr); } else { attr = new XmlAttribute(r.Prefix, r.LocalName, r.NamespaceURI, _doc); LoadAttributeValue(attr, true); return(attr); } }