1 //------------------------------------------------------------------------------ 2 // <copyright file="XmlChildEnumerator.cs" company="Microsoft"> 3 // Copyright (c) Microsoft Corporation. All rights reserved. 4 // </copyright> 5 // <owner current="true" primary="true">Microsoft</owner> 6 //------------------------------------------------------------------------------ 7 8 namespace System.Xml { 9 using System.Collections; 10 11 internal sealed class XmlChildEnumerator: IEnumerator { 12 internal XmlNode container; 13 internal XmlNode child; 14 internal bool isFirst; 15 XmlChildEnumerator( XmlNode container )16 internal XmlChildEnumerator( XmlNode container ) { 17 this.container = container; 18 this.child = container.FirstChild; 19 this.isFirst = true; 20 } 21 IEnumerator.MoveNext()22 bool IEnumerator.MoveNext() { 23 return this.MoveNext(); 24 } 25 MoveNext()26 internal bool MoveNext() { 27 if (isFirst) { 28 child = container.FirstChild; 29 isFirst = false; 30 } 31 else if (child != null) { 32 child = child.NextSibling; 33 } 34 35 return child != null; 36 } 37 IEnumerator.Reset()38 void IEnumerator.Reset() { 39 isFirst = true; 40 child = container.FirstChild; 41 } 42 43 object IEnumerator.Current { 44 get { 45 return this.Current; 46 } 47 } 48 49 internal XmlNode Current { 50 get { 51 if (isFirst || child == null) 52 throw new InvalidOperationException(Res.GetString(Res.Xml_InvalidOperation)); 53 54 return child; 55 } 56 } 57 } 58 } 59