Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / fx / src / Data / System / NewXml / TreeIterator.cs / 1 / TreeIterator.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //[....] //[....] //----------------------------------------------------------------------------- namespace System.Xml { using System; using System.Data; using System.Diagnostics; // Iterates over non-attribute nodes internal sealed class TreeIterator : BaseTreeIterator { private XmlNode nodeTop; private XmlNode currentNode; internal TreeIterator( XmlNode nodeTop ) : base( ((XmlDataDocument)(nodeTop.OwnerDocument)).Mapper ) { Debug.Assert( nodeTop != null ); this.nodeTop = nodeTop; this.currentNode = nodeTop; } internal override void Reset() { currentNode = nodeTop; } internal override XmlNode CurrentNode { get { return currentNode; } } internal override bool Next() { XmlNode nextNode; // Try to move to the first child nextNode = currentNode.FirstChild; // No children, try next sibling if ( nextNode != null ) { currentNode = nextNode; return true; } return NextRight(); } internal override bool NextRight() { // Make sure we do not get past the nodeTop if we call NextRight on a just initialized iterator and nodeTop has no children if ( currentNode == nodeTop ) { currentNode = null; return false; } XmlNode nextNode = currentNode.NextSibling; if ( nextNode != null ) { currentNode = nextNode; return true; } // No next sibling, try the first sibling of from the parent chain nextNode = currentNode; while ( nextNode != nodeTop && nextNode.NextSibling == null ) nextNode = nextNode.ParentNode; if ( nextNode == nodeTop ) { currentNode = null; return false; } currentNode = nextNode.NextSibling; Debug.Assert( currentNode != null ); return true; } } } // 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.Data; using System.Diagnostics; // Iterates over non-attribute nodes internal sealed class TreeIterator : BaseTreeIterator { private XmlNode nodeTop; private XmlNode currentNode; internal TreeIterator( XmlNode nodeTop ) : base( ((XmlDataDocument)(nodeTop.OwnerDocument)).Mapper ) { Debug.Assert( nodeTop != null ); this.nodeTop = nodeTop; this.currentNode = nodeTop; } internal override void Reset() { currentNode = nodeTop; } internal override XmlNode CurrentNode { get { return currentNode; } } internal override bool Next() { XmlNode nextNode; // Try to move to the first child nextNode = currentNode.FirstChild; // No children, try next sibling if ( nextNode != null ) { currentNode = nextNode; return true; } return NextRight(); } internal override bool NextRight() { // Make sure we do not get past the nodeTop if we call NextRight on a just initialized iterator and nodeTop has no children if ( currentNode == nodeTop ) { currentNode = null; return false; } XmlNode nextNode = currentNode.NextSibling; if ( nextNode != null ) { currentNode = nextNode; return true; } // No next sibling, try the first sibling of from the parent chain nextNode = currentNode; while ( nextNode != nodeTop && nextNode.NextSibling == null ) nextNode = nextNode.ParentNode; if ( nextNode == nodeTop ) { currentNode = null; return false; } currentNode = nextNode.NextSibling; Debug.Assert( currentNode != null ); return true; } } } // 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
- XsltSettings.cs
- RawStylusInputReport.cs
- SessionState.cs
- RecognitionResult.cs
- FaultReasonText.cs
- IntSumAggregationOperator.cs
- StoryFragments.cs
- Span.cs
- FastEncoderWindow.cs
- XamlSerializerUtil.cs
- ConnectionsZone.cs
- BitmapEditor.cs
- WsdlBuildProvider.cs
- Debug.cs
- IODescriptionAttribute.cs
- CdpEqualityComparer.cs
- InputLanguageSource.cs
- DataSourceCacheDurationConverter.cs
- Metadata.cs
- NavigationCommands.cs
- CoreSwitches.cs
- DetailsViewRow.cs
- EmptyQuery.cs
- XmlSerializer.cs
- NameScope.cs
- SqlMultiplexer.cs
- RotationValidation.cs
- XpsSerializationManager.cs
- MatrixTransform3D.cs
- VersionConverter.cs
- TokenBasedSetEnumerator.cs
- CanonicalXml.cs
- TextProperties.cs
- invalidudtexception.cs
- ContractInferenceHelper.cs
- WebPartConnection.cs
- GPStream.cs
- ISO2022Encoding.cs
- SmiEventSink_Default.cs
- PublishLicense.cs
- UidManager.cs
- CheckBoxAutomationPeer.cs
- WorkflowPersistenceService.cs
- IgnoreFlushAndCloseStream.cs
- Filter.cs
- ContractCodeDomInfo.cs
- CompositeControl.cs
- XPathExpr.cs
- TextStore.cs
- GridViewSelectEventArgs.cs
- ContextMenu.cs
- EntityDataSourceUtil.cs
- SkipStoryboardToFill.cs
- HttpHandlerAction.cs
- DesignSurfaceServiceContainer.cs
- TimeoutException.cs
- DependencyPropertyHelper.cs
- HostedImpersonationContext.cs
- ReflectionHelper.cs
- DocumentViewerBase.cs
- PartialCachingControl.cs
- Identifier.cs
- EmptyStringExpandableObjectConverter.cs
- Button.cs
- ArrayListCollectionBase.cs
- ValueTypePropertyReference.cs
- MimeMapping.cs
- ContainerParagraph.cs
- MultipartContentParser.cs
- Semaphore.cs
- UnsafeNativeMethods.cs
- StreamInfo.cs
- StreamInfo.cs
- MultiplexingDispatchMessageFormatter.cs
- VBCodeProvider.cs
- JsonQNameDataContract.cs
- Publisher.cs
- TakeQueryOptionExpression.cs
- MenuItemStyle.cs
- DSASignatureFormatter.cs
- AnnotationAuthorChangedEventArgs.cs
- FrameworkElement.cs
- ParamArrayAttribute.cs
- BaseComponentEditor.cs
- RegexCode.cs
- MediaContextNotificationWindow.cs
- Hash.cs
- XmlComplianceUtil.cs
- SerializationSectionGroup.cs
- UIHelper.cs
- CustomExpressionEventArgs.cs
- BaseInfoTable.cs
- BCLDebug.cs
- HitTestParameters.cs
- ProfileManager.cs
- RowUpdatingEventArgs.cs
- BrushValueSerializer.cs
- WorkflowMarkupSerializer.cs
- IEnumerable.cs
- TypefaceCollection.cs