Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Xml / System / Xml / Dom / XmlNamedNodeMap.cs / 1305376 / XmlNamedNodeMap.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //----------------------------------------------------------------------------- namespace System.Xml { using System.Collections; // Represents a collection of nodes that can be accessed by name or index. public class XmlNamedNodeMap : IEnumerable { internal XmlNode parent; internal ArrayList nodes; internal XmlNamedNodeMap( XmlNode parent ) { this.parent = parent; this.nodes = null; } // Retrieves a XmlNode specified by name. public virtual XmlNode GetNamedItem(String name) { int offset = FindNodeOffset(name); if (offset >= 0) return(XmlNode) Nodes[offset]; return null; } // Adds a XmlNode using its Name property public virtual XmlNode SetNamedItem(XmlNode node) { if ( node == null ) return null; int offset = FindNodeOffset( node.LocalName, node.NamespaceURI ); if (offset == -1) { AddNode( node ); return null; } else { return ReplaceNodeAt( offset, node ); } } // Removes the node specified by name. public virtual XmlNode RemoveNamedItem(String name) { int offset = FindNodeOffset(name); if (offset >= 0) { return RemoveNodeAt( offset ); } return null; } // Gets the number of nodes in this XmlNamedNodeMap. public virtual int Count { [System.Runtime.TargetedPatchingOptOutAttribute("Performance critical to inline across NGen image boundaries")] get { if (nodes != null) return nodes.Count; return 0; } } // Retrieves the node at the specified index in this XmlNamedNodeMap. public virtual XmlNode Item(int index) { if (index < 0 || index >= Nodes.Count) return null; try { return(XmlNode) Nodes[index]; } catch ( ArgumentOutOfRangeException ) { throw new IndexOutOfRangeException(Res.GetString(Res.Xdom_IndexOutOfRange)); } } // // DOM Level 2 // // Retrieves a node specified by LocalName and NamespaceURI. public virtual XmlNode GetNamedItem(String localName, String namespaceURI) { int offset = FindNodeOffset( localName, namespaceURI ); if (offset >= 0) return(XmlNode) Nodes[offset]; return null; } // Removes a node specified by local name and namespace URI. public virtual XmlNode RemoveNamedItem(String localName, String namespaceURI) { int offset = FindNodeOffset( localName, namespaceURI ); if (offset >= 0) { return RemoveNodeAt( offset ); } return null; } internal ArrayList Nodes { get { if (nodes == null) nodes = new ArrayList(); return nodes; } } public virtual IEnumerator GetEnumerator() { if ( nodes == null ) { return XmlDocument.EmptyEnumerator; } else { return Nodes.GetEnumerator(); } } internal int FindNodeOffset( string name ) { int c = this.Count; for (int i = 0; i < c; i++) { XmlNode node = (XmlNode) Nodes[i]; if (name == node.Name) return i; } return -1; } internal int FindNodeOffset( string localName, string namespaceURI ) { int c = this.Count; for (int i = 0; i < c; i++) { XmlNode node = (XmlNode) Nodes[i]; if (node.LocalName == localName && node.NamespaceURI == namespaceURI) return i; } return -1; } internal virtual XmlNode AddNode( XmlNode node ) { XmlNode oldParent; if ( node.NodeType == XmlNodeType.Attribute ) oldParent = ((XmlAttribute)node).OwnerElement; else oldParent = node.ParentNode; string nodeValue = node.Value; XmlNodeChangedEventArgs args = parent.GetEventArgs( node, oldParent, parent, nodeValue, nodeValue, XmlNodeChangedAction.Insert ); if (args != null) parent.BeforeEvent( args ); Nodes.Add( node ); node.SetParent( parent ); if (args != null) parent.AfterEvent( args ); return node; } internal virtual XmlNode AddNodeForLoad(XmlNode node, XmlDocument doc) { XmlNodeChangedEventArgs args = doc.GetInsertEventArgsForLoad(node, parent); if (args != null) { doc.BeforeEvent(args); } Nodes.Add(node); node.SetParent(parent); if (args != null) { doc.AfterEvent(args); } return node; } internal virtual XmlNode RemoveNodeAt( int i ) { XmlNode oldNode = (XmlNode)Nodes[i]; string oldNodeValue = oldNode.Value; XmlNodeChangedEventArgs args = parent.GetEventArgs( oldNode, parent, null, oldNodeValue, oldNodeValue, XmlNodeChangedAction.Remove ); if (args != null) parent.BeforeEvent( args ); Nodes.RemoveAt(i); oldNode.SetParent( null ); if (args != null) parent.AfterEvent( args ); return oldNode; } internal XmlNode ReplaceNodeAt( int i, XmlNode node ) { XmlNode oldNode = RemoveNodeAt( i ); InsertNodeAt( i, node ); return oldNode; } internal virtual XmlNode InsertNodeAt( int i, XmlNode node ) { XmlNode oldParent; if ( node.NodeType == XmlNodeType.Attribute ) oldParent = ((XmlAttribute)node).OwnerElement; else oldParent = node.ParentNode; string nodeValue = node.Value; XmlNodeChangedEventArgs args = parent.GetEventArgs( node, oldParent, parent, nodeValue, nodeValue, XmlNodeChangedAction.Insert ); if (args != null) parent.BeforeEvent( args ); Nodes.Insert( i, node ); node.SetParent( parent ); if (args != null) parent.AfterEvent( args ); return node; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //----------------------------------------------------------------------------- namespace System.Xml { using System.Collections; // Represents a collection of nodes that can be accessed by name or index. public class XmlNamedNodeMap : IEnumerable { internal XmlNode parent; internal ArrayList nodes; internal XmlNamedNodeMap( XmlNode parent ) { this.parent = parent; this.nodes = null; } // Retrieves a XmlNode specified by name. public virtual XmlNode GetNamedItem(String name) { int offset = FindNodeOffset(name); if (offset >= 0) return(XmlNode) Nodes[offset]; return null; } // Adds a XmlNode using its Name property public virtual XmlNode SetNamedItem(XmlNode node) { if ( node == null ) return null; int offset = FindNodeOffset( node.LocalName, node.NamespaceURI ); if (offset == -1) { AddNode( node ); return null; } else { return ReplaceNodeAt( offset, node ); } } // Removes the node specified by name. public virtual XmlNode RemoveNamedItem(String name) { int offset = FindNodeOffset(name); if (offset >= 0) { return RemoveNodeAt( offset ); } return null; } // Gets the number of nodes in this XmlNamedNodeMap. public virtual int Count { [System.Runtime.TargetedPatchingOptOutAttribute("Performance critical to inline across NGen image boundaries")] get { if (nodes != null) return nodes.Count; return 0; } } // Retrieves the node at the specified index in this XmlNamedNodeMap. public virtual XmlNode Item(int index) { if (index < 0 || index >= Nodes.Count) return null; try { return(XmlNode) Nodes[index]; } catch ( ArgumentOutOfRangeException ) { throw new IndexOutOfRangeException(Res.GetString(Res.Xdom_IndexOutOfRange)); } } // // DOM Level 2 // // Retrieves a node specified by LocalName and NamespaceURI. public virtual XmlNode GetNamedItem(String localName, String namespaceURI) { int offset = FindNodeOffset( localName, namespaceURI ); if (offset >= 0) return(XmlNode) Nodes[offset]; return null; } // Removes a node specified by local name and namespace URI. public virtual XmlNode RemoveNamedItem(String localName, String namespaceURI) { int offset = FindNodeOffset( localName, namespaceURI ); if (offset >= 0) { return RemoveNodeAt( offset ); } return null; } internal ArrayList Nodes { get { if (nodes == null) nodes = new ArrayList(); return nodes; } } public virtual IEnumerator GetEnumerator() { if ( nodes == null ) { return XmlDocument.EmptyEnumerator; } else { return Nodes.GetEnumerator(); } } internal int FindNodeOffset( string name ) { int c = this.Count; for (int i = 0; i < c; i++) { XmlNode node = (XmlNode) Nodes[i]; if (name == node.Name) return i; } return -1; } internal int FindNodeOffset( string localName, string namespaceURI ) { int c = this.Count; for (int i = 0; i < c; i++) { XmlNode node = (XmlNode) Nodes[i]; if (node.LocalName == localName && node.NamespaceURI == namespaceURI) return i; } return -1; } internal virtual XmlNode AddNode( XmlNode node ) { XmlNode oldParent; if ( node.NodeType == XmlNodeType.Attribute ) oldParent = ((XmlAttribute)node).OwnerElement; else oldParent = node.ParentNode; string nodeValue = node.Value; XmlNodeChangedEventArgs args = parent.GetEventArgs( node, oldParent, parent, nodeValue, nodeValue, XmlNodeChangedAction.Insert ); if (args != null) parent.BeforeEvent( args ); Nodes.Add( node ); node.SetParent( parent ); if (args != null) parent.AfterEvent( args ); return node; } internal virtual XmlNode AddNodeForLoad(XmlNode node, XmlDocument doc) { XmlNodeChangedEventArgs args = doc.GetInsertEventArgsForLoad(node, parent); if (args != null) { doc.BeforeEvent(args); } Nodes.Add(node); node.SetParent(parent); if (args != null) { doc.AfterEvent(args); } return node; } internal virtual XmlNode RemoveNodeAt( int i ) { XmlNode oldNode = (XmlNode)Nodes[i]; string oldNodeValue = oldNode.Value; XmlNodeChangedEventArgs args = parent.GetEventArgs( oldNode, parent, null, oldNodeValue, oldNodeValue, XmlNodeChangedAction.Remove ); if (args != null) parent.BeforeEvent( args ); Nodes.RemoveAt(i); oldNode.SetParent( null ); if (args != null) parent.AfterEvent( args ); return oldNode; } internal XmlNode ReplaceNodeAt( int i, XmlNode node ) { XmlNode oldNode = RemoveNodeAt( i ); InsertNodeAt( i, node ); return oldNode; } internal virtual XmlNode InsertNodeAt( int i, XmlNode node ) { XmlNode oldParent; if ( node.NodeType == XmlNodeType.Attribute ) oldParent = ((XmlAttribute)node).OwnerElement; else oldParent = node.ParentNode; string nodeValue = node.Value; XmlNodeChangedEventArgs args = parent.GetEventArgs( node, oldParent, parent, nodeValue, nodeValue, XmlNodeChangedAction.Insert ); if (args != null) parent.BeforeEvent( args ); Nodes.Insert( i, node ); node.SetParent( parent ); if (args != null) parent.AfterEvent( args ); return node; } } } // 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
- StaticExtension.cs
- EntityDataSourceContextDisposingEventArgs.cs
- Currency.cs
- BamlMapTable.cs
- SqlUserDefinedAggregateAttribute.cs
- LinqDataSourceSelectEventArgs.cs
- TemplateBindingExpression.cs
- OperatorExpressions.cs
- EtwTrace.cs
- TreeNode.cs
- ApplicationDirectoryMembershipCondition.cs
- Win32KeyboardDevice.cs
- Lookup.cs
- CodeNamespaceImportCollection.cs
- ContentFileHelper.cs
- ClonableStack.cs
- PublisherIdentityPermission.cs
- OpacityConverter.cs
- RestClientProxyHandler.cs
- StringDictionaryEditor.cs
- DependentList.cs
- TypeElement.cs
- TreeNodeStyleCollection.cs
- XmlMemberMapping.cs
- SqlExpressionNullability.cs
- CodeCompiler.cs
- ServiceTimeoutsElement.cs
- XmlSchemaAttributeGroupRef.cs
- InputLanguage.cs
- ApplicationServiceHelper.cs
- SchemaExporter.cs
- AmbientLight.cs
- Expressions.cs
- PageCodeDomTreeGenerator.cs
- ButtonRenderer.cs
- HuffmanTree.cs
- ToolStripDesignerUtils.cs
- HtmlTextArea.cs
- XmlAttributeCollection.cs
- ArcSegment.cs
- DataBindingCollectionEditor.cs
- WebPartsSection.cs
- TableLayoutCellPaintEventArgs.cs
- WindowsPrincipal.cs
- XmlLanguage.cs
- KnownTypes.cs
- TextEffect.cs
- DbConnectionPoolOptions.cs
- DataGridClipboardHelper.cs
- DecoderNLS.cs
- RawStylusInputCustomDataList.cs
- ReachFixedPageSerializerAsync.cs
- GridViewColumnHeader.cs
- NeutralResourcesLanguageAttribute.cs
- SmtpSection.cs
- XmlKeywords.cs
- HitTestResult.cs
- TcpAppDomainProtocolHandler.cs
- AttributeXamlType.cs
- EntityDataSourceDesigner.cs
- Pts.cs
- TypedTableBaseExtensions.cs
- DesignerImageAdapter.cs
- Point.cs
- EncoderParameters.cs
- ThrowHelper.cs
- ReplyAdapterChannelListener.cs
- ProgressChangedEventArgs.cs
- FileAuthorizationModule.cs
- XmlDataContract.cs
- XComponentModel.cs
- ServiceModelInstallComponent.cs
- SoapReflector.cs
- BufferedWebEventProvider.cs
- PlatformCulture.cs
- WebFormsRootDesigner.cs
- StringArrayEditor.cs
- IResourceProvider.cs
- FamilyMapCollection.cs
- ObjectIDGenerator.cs
- PathGeometry.cs
- ExceptionUtil.cs
- CommonProperties.cs
- CoreSwitches.cs
- WasHttpHandlersInstallComponent.cs
- ToolStripItemClickedEventArgs.cs
- EditableTreeList.cs
- DataColumnCollection.cs
- RegionData.cs
- EventManager.cs
- UnSafeCharBuffer.cs
- AppDomain.cs
- ServiceControllerDesigner.cs
- SemaphoreSecurity.cs
- XmlSchemaAnyAttribute.cs
- TextServicesManager.cs
- CodeCatchClause.cs
- ControlTemplate.cs
- RowVisual.cs
- XmlAttributeCache.cs