Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / Xml / System / Xml / Dom / XmlAttribute.cs / 1 / XmlAttribute.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //----------------------------------------------------------------------------- namespace System.Xml { using System; using System.Xml.Schema; using System.Xml.XPath; using System.Diagnostics; // Represents an attribute of the XMLElement object. Valid and default // values for the attribute are defined in a DTD or schema. public class XmlAttribute : XmlNode { XmlName name; XmlLinkedNode lastChild; internal XmlAttribute( XmlName name, XmlDocument doc ): base( doc ) { Debug.Assert(name!=null); Debug.Assert(doc!=null); this.parentNode = null; if ( !doc.IsLoading ) { XmlDocument.CheckName( name.Prefix ); XmlDocument.CheckName( name.LocalName ); } if (name.LocalName.Length == 0) throw new ArgumentException(Res.GetString(Res.Xdom_Attr_Name)); this.name = name; } internal int LocalNameHash { get { return name.HashCode; } } protected internal XmlAttribute( string prefix, string localName, string namespaceURI, XmlDocument doc ) : this(doc.AddAttrXmlName(prefix, localName, namespaceURI, null), doc) { } internal XmlName XmlName { get { return name; } set { name = value; } } // Creates a duplicate of this node. public override XmlNode CloneNode(bool deep) { // CloneNode for attributes is deep irrespective of parameter 'deep' value Debug.Assert( OwnerDocument != null ); XmlDocument doc = OwnerDocument; XmlAttribute attr = doc.CreateAttribute( Prefix, LocalName, NamespaceURI ); attr.CopyChildren( doc, this, true ); return attr; } // Gets the parent of this node (for nodes that can have parents). public override XmlNode ParentNode { get { return null;} } // Gets the name of the node. public override String Name { get { return name.Name;} } // Gets the name of the node without the namespace prefix. public override String LocalName { get { return name.LocalName;} } // Gets the namespace URI of this node. public override String NamespaceURI { get { return name.NamespaceURI;} } // Gets or sets the namespace prefix of this node. public override String Prefix { get { return name.Prefix;} set { name = name.OwnerDocument.AddAttrXmlName( value, LocalName, NamespaceURI, SchemaInfo ); } } // Gets the type of the current node. public override XmlNodeType NodeType { get { return XmlNodeType.Attribute;} } // Gets the XmlDocument that contains this node. public override XmlDocument OwnerDocument { get { return name.OwnerDocument; } } // Gets or sets the value of the node. public override String Value { get { return InnerText; } set { InnerText = value; } //use InnerText which has perf optimization } public override IXmlSchemaInfo SchemaInfo { get { return name; } } public override String InnerText { set { if (PrepareOwnerElementInElementIdAttrMap()) { string innerText = base.InnerText; base.InnerText = value; ResetOwnerElementInElementIdAttrMap(innerText); } else { base.InnerText = value; } } } internal bool PrepareOwnerElementInElementIdAttrMap() { XmlDocument ownerDocument = OwnerDocument; if (ownerDocument.DtdSchemaInfo != null) { // DTD exists XmlElement ownerElement = OwnerElement; if (ownerElement != null) { return ownerElement.Attributes.PrepareParentInElementIdAttrMap(Prefix, LocalName); } } return false; } internal void ResetOwnerElementInElementIdAttrMap(string oldInnerText) { XmlElement ownerElement = OwnerElement; if (ownerElement != null) { ownerElement.Attributes.ResetParentInElementIdAttrMap(oldInnerText, InnerText); } } internal override bool IsContainer { get { return true;} } //the function is provided only at Load time to speed up Load process internal override XmlNode AppendChildForLoad(XmlNode newChild, XmlDocument doc) { XmlNodeChangedEventArgs args = doc.GetInsertEventArgsForLoad( newChild, this ); if (args != null) doc.BeforeEvent( args ); XmlLinkedNode newNode = (XmlLinkedNode)newChild; if (lastChild == null) { // if LastNode == null newNode.next = newNode; lastChild = newNode; newNode.SetParentForLoad(this); } else { XmlLinkedNode refNode = lastChild; // refNode = LastNode; newNode.next = refNode.next; refNode.next = newNode; lastChild = newNode; // LastNode = newNode; if (refNode.IsText && newNode.IsText) { NestTextNodes(refNode, newNode); } else { newNode.SetParentForLoad(this); } } if (args != null) doc.AfterEvent( args ); return newNode; } internal override XmlLinkedNode LastNode { get { return lastChild;} set { lastChild = value;} } internal override bool IsValidChildType( XmlNodeType type ) { return(type == XmlNodeType.Text) || (type == XmlNodeType.EntityReference); } // Gets a value indicating whether the value was explicitly set. public virtual bool Specified { get { return true;} } public override XmlNode InsertBefore(XmlNode newChild, XmlNode refChild) { XmlNode node; if (PrepareOwnerElementInElementIdAttrMap()) { string innerText = InnerText; node = base.InsertBefore(newChild, refChild); ResetOwnerElementInElementIdAttrMap(innerText); } else { node = base.InsertBefore(newChild, refChild); } return node; } public override XmlNode InsertAfter(XmlNode newChild, XmlNode refChild) { XmlNode node; if (PrepareOwnerElementInElementIdAttrMap()) { string innerText = InnerText; node = base.InsertAfter(newChild, refChild); ResetOwnerElementInElementIdAttrMap(innerText); } else { node = base.InsertAfter(newChild, refChild); } return node; } public override XmlNode ReplaceChild(XmlNode newChild, XmlNode oldChild) { XmlNode node; if (PrepareOwnerElementInElementIdAttrMap()) { string innerText = InnerText; node = base.ReplaceChild(newChild, oldChild); ResetOwnerElementInElementIdAttrMap(innerText); } else { node = base.ReplaceChild(newChild, oldChild); } return node; } public override XmlNode RemoveChild(XmlNode oldChild) { XmlNode node; if (PrepareOwnerElementInElementIdAttrMap()) { string innerText = InnerText; node = base.RemoveChild(oldChild); ResetOwnerElementInElementIdAttrMap(innerText); } else { node = base.RemoveChild(oldChild); } return node; } public override XmlNode PrependChild(XmlNode newChild) { XmlNode node; if (PrepareOwnerElementInElementIdAttrMap()) { string innerText = InnerText; node = base.PrependChild(newChild); ResetOwnerElementInElementIdAttrMap(innerText); } else { node = base.PrependChild(newChild); } return node; } public override XmlNode AppendChild(XmlNode newChild) { XmlNode node; if (PrepareOwnerElementInElementIdAttrMap()) { string innerText = InnerText; node = base.AppendChild(newChild); ResetOwnerElementInElementIdAttrMap(innerText); } else { node = base.AppendChild(newChild); } return node; } // DOM Level 2 // Gets the XmlElement node that contains this attribute. public virtual XmlElement OwnerElement { get { return parentNode as XmlElement; } } // Gets or sets the markup representing just the children of this node. public override string InnerXml { set { RemoveAll(); XmlLoader loader = new XmlLoader(); loader.LoadInnerXmlAttribute( this, value ); } } // Saves the node to the specified XmlWriter. public override void WriteTo(XmlWriter w) { w.WriteStartAttribute( Prefix, LocalName, NamespaceURI ); WriteContentTo(w); w.WriteEndAttribute(); } // Saves all the children of the node to the specified XmlWriter. public override void WriteContentTo(XmlWriter w) { for (XmlNode node = FirstChild; node != null; node = node.NextSibling) { node.WriteTo(w); } } public override String BaseURI { get { if ( OwnerElement != null ) return OwnerElement.BaseURI; return String.Empty; } } internal override void SetParent(XmlNode node) { this.parentNode = node; } internal override XmlSpace XmlSpace { get { if ( OwnerElement != null ) return OwnerElement.XmlSpace; return XmlSpace.None; } } internal override String XmlLang { get { if ( OwnerElement != null ) return OwnerElement.XmlLang; return String.Empty; } } internal override XPathNodeType XPNodeType { get { if (IsNamespace) { return XPathNodeType.Namespace; } return XPathNodeType.Attribute; } } internal override string XPLocalName { get { string localName = name.LocalName; if (localName == OwnerDocument.strXmlns ) return string.Empty; return localName; } } internal bool IsNamespace { get { return Ref.Equal(name.NamespaceURI, name.OwnerDocument.strReservedXmlns); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //----------------------------------------------------------------------------- namespace System.Xml { using System; using System.Xml.Schema; using System.Xml.XPath; using System.Diagnostics; // Represents an attribute of the XMLElement object. Valid and default // values for the attribute are defined in a DTD or schema. public class XmlAttribute : XmlNode { XmlName name; XmlLinkedNode lastChild; internal XmlAttribute( XmlName name, XmlDocument doc ): base( doc ) { Debug.Assert(name!=null); Debug.Assert(doc!=null); this.parentNode = null; if ( !doc.IsLoading ) { XmlDocument.CheckName( name.Prefix ); XmlDocument.CheckName( name.LocalName ); } if (name.LocalName.Length == 0) throw new ArgumentException(Res.GetString(Res.Xdom_Attr_Name)); this.name = name; } internal int LocalNameHash { get { return name.HashCode; } } protected internal XmlAttribute( string prefix, string localName, string namespaceURI, XmlDocument doc ) : this(doc.AddAttrXmlName(prefix, localName, namespaceURI, null), doc) { } internal XmlName XmlName { get { return name; } set { name = value; } } // Creates a duplicate of this node. public override XmlNode CloneNode(bool deep) { // CloneNode for attributes is deep irrespective of parameter 'deep' value Debug.Assert( OwnerDocument != null ); XmlDocument doc = OwnerDocument; XmlAttribute attr = doc.CreateAttribute( Prefix, LocalName, NamespaceURI ); attr.CopyChildren( doc, this, true ); return attr; } // Gets the parent of this node (for nodes that can have parents). public override XmlNode ParentNode { get { return null;} } // Gets the name of the node. public override String Name { get { return name.Name;} } // Gets the name of the node without the namespace prefix. public override String LocalName { get { return name.LocalName;} } // Gets the namespace URI of this node. public override String NamespaceURI { get { return name.NamespaceURI;} } // Gets or sets the namespace prefix of this node. public override String Prefix { get { return name.Prefix;} set { name = name.OwnerDocument.AddAttrXmlName( value, LocalName, NamespaceURI, SchemaInfo ); } } // Gets the type of the current node. public override XmlNodeType NodeType { get { return XmlNodeType.Attribute;} } // Gets the XmlDocument that contains this node. public override XmlDocument OwnerDocument { get { return name.OwnerDocument; } } // Gets or sets the value of the node. public override String Value { get { return InnerText; } set { InnerText = value; } //use InnerText which has perf optimization } public override IXmlSchemaInfo SchemaInfo { get { return name; } } public override String InnerText { set { if (PrepareOwnerElementInElementIdAttrMap()) { string innerText = base.InnerText; base.InnerText = value; ResetOwnerElementInElementIdAttrMap(innerText); } else { base.InnerText = value; } } } internal bool PrepareOwnerElementInElementIdAttrMap() { XmlDocument ownerDocument = OwnerDocument; if (ownerDocument.DtdSchemaInfo != null) { // DTD exists XmlElement ownerElement = OwnerElement; if (ownerElement != null) { return ownerElement.Attributes.PrepareParentInElementIdAttrMap(Prefix, LocalName); } } return false; } internal void ResetOwnerElementInElementIdAttrMap(string oldInnerText) { XmlElement ownerElement = OwnerElement; if (ownerElement != null) { ownerElement.Attributes.ResetParentInElementIdAttrMap(oldInnerText, InnerText); } } internal override bool IsContainer { get { return true;} } //the function is provided only at Load time to speed up Load process internal override XmlNode AppendChildForLoad(XmlNode newChild, XmlDocument doc) { XmlNodeChangedEventArgs args = doc.GetInsertEventArgsForLoad( newChild, this ); if (args != null) doc.BeforeEvent( args ); XmlLinkedNode newNode = (XmlLinkedNode)newChild; if (lastChild == null) { // if LastNode == null newNode.next = newNode; lastChild = newNode; newNode.SetParentForLoad(this); } else { XmlLinkedNode refNode = lastChild; // refNode = LastNode; newNode.next = refNode.next; refNode.next = newNode; lastChild = newNode; // LastNode = newNode; if (refNode.IsText && newNode.IsText) { NestTextNodes(refNode, newNode); } else { newNode.SetParentForLoad(this); } } if (args != null) doc.AfterEvent( args ); return newNode; } internal override XmlLinkedNode LastNode { get { return lastChild;} set { lastChild = value;} } internal override bool IsValidChildType( XmlNodeType type ) { return(type == XmlNodeType.Text) || (type == XmlNodeType.EntityReference); } // Gets a value indicating whether the value was explicitly set. public virtual bool Specified { get { return true;} } public override XmlNode InsertBefore(XmlNode newChild, XmlNode refChild) { XmlNode node; if (PrepareOwnerElementInElementIdAttrMap()) { string innerText = InnerText; node = base.InsertBefore(newChild, refChild); ResetOwnerElementInElementIdAttrMap(innerText); } else { node = base.InsertBefore(newChild, refChild); } return node; } public override XmlNode InsertAfter(XmlNode newChild, XmlNode refChild) { XmlNode node; if (PrepareOwnerElementInElementIdAttrMap()) { string innerText = InnerText; node = base.InsertAfter(newChild, refChild); ResetOwnerElementInElementIdAttrMap(innerText); } else { node = base.InsertAfter(newChild, refChild); } return node; } public override XmlNode ReplaceChild(XmlNode newChild, XmlNode oldChild) { XmlNode node; if (PrepareOwnerElementInElementIdAttrMap()) { string innerText = InnerText; node = base.ReplaceChild(newChild, oldChild); ResetOwnerElementInElementIdAttrMap(innerText); } else { node = base.ReplaceChild(newChild, oldChild); } return node; } public override XmlNode RemoveChild(XmlNode oldChild) { XmlNode node; if (PrepareOwnerElementInElementIdAttrMap()) { string innerText = InnerText; node = base.RemoveChild(oldChild); ResetOwnerElementInElementIdAttrMap(innerText); } else { node = base.RemoveChild(oldChild); } return node; } public override XmlNode PrependChild(XmlNode newChild) { XmlNode node; if (PrepareOwnerElementInElementIdAttrMap()) { string innerText = InnerText; node = base.PrependChild(newChild); ResetOwnerElementInElementIdAttrMap(innerText); } else { node = base.PrependChild(newChild); } return node; } public override XmlNode AppendChild(XmlNode newChild) { XmlNode node; if (PrepareOwnerElementInElementIdAttrMap()) { string innerText = InnerText; node = base.AppendChild(newChild); ResetOwnerElementInElementIdAttrMap(innerText); } else { node = base.AppendChild(newChild); } return node; } // DOM Level 2 // Gets the XmlElement node that contains this attribute. public virtual XmlElement OwnerElement { get { return parentNode as XmlElement; } } // Gets or sets the markup representing just the children of this node. public override string InnerXml { set { RemoveAll(); XmlLoader loader = new XmlLoader(); loader.LoadInnerXmlAttribute( this, value ); } } // Saves the node to the specified XmlWriter. public override void WriteTo(XmlWriter w) { w.WriteStartAttribute( Prefix, LocalName, NamespaceURI ); WriteContentTo(w); w.WriteEndAttribute(); } // Saves all the children of the node to the specified XmlWriter. public override void WriteContentTo(XmlWriter w) { for (XmlNode node = FirstChild; node != null; node = node.NextSibling) { node.WriteTo(w); } } public override String BaseURI { get { if ( OwnerElement != null ) return OwnerElement.BaseURI; return String.Empty; } } internal override void SetParent(XmlNode node) { this.parentNode = node; } internal override XmlSpace XmlSpace { get { if ( OwnerElement != null ) return OwnerElement.XmlSpace; return XmlSpace.None; } } internal override String XmlLang { get { if ( OwnerElement != null ) return OwnerElement.XmlLang; return String.Empty; } } internal override XPathNodeType XPNodeType { get { if (IsNamespace) { return XPathNodeType.Namespace; } return XPathNodeType.Attribute; } } internal override string XPLocalName { get { string localName = name.LocalName; if (localName == OwnerDocument.strXmlns ) return string.Empty; return localName; } } internal bool IsNamespace { get { return Ref.Equal(name.NamespaceURI, name.OwnerDocument.strReservedXmlns); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SynchronizedInputAdaptor.cs
- PasswordTextContainer.cs
- Cursors.cs
- CodeParameterDeclarationExpression.cs
- PersonalizationStateInfo.cs
- LoadedOrUnloadedOperation.cs
- WorkerRequest.cs
- InstanceNotReadyException.cs
- CqlLexer.cs
- StandardOleMarshalObject.cs
- DrawingGroupDrawingContext.cs
- DataViewManagerListItemTypeDescriptor.cs
- ToolBar.cs
- WebFaultClientMessageInspector.cs
- OperationAbortedException.cs
- Transform.cs
- NativeMethods.cs
- WebPartDescriptionCollection.cs
- EncryptedXml.cs
- PackagePartCollection.cs
- FlowchartSizeFeature.cs
- RangeValidator.cs
- CodeStatementCollection.cs
- TypeUsageBuilder.cs
- WebResponse.cs
- AssemblyCollection.cs
- KeyedCollection.cs
- WebScriptMetadataMessageEncoderFactory.cs
- Pool.cs
- LogEntrySerialization.cs
- ProviderCollection.cs
- ToolStripSystemRenderer.cs
- DataGridViewHeaderCell.cs
- AspNetCompatibilityRequirementsAttribute.cs
- BindingsCollection.cs
- RawAppCommandInputReport.cs
- ButtonBaseAdapter.cs
- Compress.cs
- LostFocusEventManager.cs
- Exceptions.cs
- BooleanAnimationUsingKeyFrames.cs
- FileSystemEnumerable.cs
- CombinedGeometry.cs
- SEHException.cs
- XmlNullResolver.cs
- BinaryUtilClasses.cs
- ServiceMetadataExtension.cs
- EncodingInfo.cs
- Menu.cs
- MouseCaptureWithinProperty.cs
- Soap12ProtocolImporter.cs
- MessageAction.cs
- AspNetCompatibilityRequirementsAttribute.cs
- SqlGatherConsumedAliases.cs
- XmlSchemaAttributeGroupRef.cs
- _AutoWebProxyScriptHelper.cs
- MimeFormatter.cs
- Relationship.cs
- HttpProfileBase.cs
- DelegatingStream.cs
- ShaderEffect.cs
- SimpleType.cs
- IPipelineRuntime.cs
- InputMethod.cs
- PartialTrustVisibleAssembliesSection.cs
- BuildProvider.cs
- GeneralTransform3DTo2DTo3D.cs
- PerspectiveCamera.cs
- ValueChangedEventManager.cs
- Line.cs
- AsymmetricAlgorithm.cs
- DirectoryInfo.cs
- ColorInterpolationModeValidation.cs
- WorkflowRuntime.cs
- HtmlInputImage.cs
- WebPartConnectionsConfigureVerb.cs
- SiteMapNodeItemEventArgs.cs
- TreeBuilderXamlTranslator.cs
- SmtpNtlmAuthenticationModule.cs
- AspNetSynchronizationContext.cs
- UnsafeNativeMethods.cs
- Control.cs
- TableItemStyle.cs
- PropertyBuilder.cs
- TextParaClient.cs
- CellLabel.cs
- _SSPIWrapper.cs
- QueryStringParameter.cs
- SqlVersion.cs
- RegexBoyerMoore.cs
- SuspendDesigner.cs
- EntityAdapter.cs
- XamlToRtfParser.cs
- TextDecoration.cs
- HwndProxyElementProvider.cs
- TypeReference.cs
- HttpsHostedTransportConfiguration.cs
- ApplicationTrust.cs
- DecoderBestFitFallback.cs
- SerializationBinder.cs