Exemplo n.º 1
0
        /// <summary>
        /// Returns an INodeIterator instance that iterates the children
        /// of the current node; otherwise, <c>Null</c>.
        /// </summary>
        /// <returns></returns>
        public override INodeIterator GetChildren()
        {
            SifVersion version = Version;


            // Get all of the Element fields and children that match the
            // NodeTest into a list
            SifFormatter    formatter = Adk.Dtd.GetFormatter(version);
            IList <Element> elements  = formatter.GetContent(fSifElement, version);

            if (elements.Count == 0)
            {
                return(null);
            }
            else if (elements.Count == 1)
            {
                Element singleChild = elements[0];
                if (singleChild is SimpleField)
                {
                    return(new SingleNodeIterator(SimpleFieldPointer.Create(this, (SimpleField)singleChild)));
                }
                else
                {
                    return(new SingleNodeIterator(Create(this, (SifElement)singleChild, version)));
                }
            }


            return(new AdkElementIterator(this, elements));
        }