Exemplo n.º 1
0
        public virtual bool ReadToNextSibling(string localName, string namespaceURI)
        {
            if (localName == null || localName.Length == 0)
            {
                throw XmlExceptionHelper.CreateInvalidNameArgumentException(localName, nameof(localName));
            }
            if (namespaceURI == null)
            {
                throw new ArgumentNullException(nameof(namespaceURI));
            }
            localName    = this.NameTable.Add(localName);
            namespaceURI = this.NameTable.Add(namespaceURI);
            XmlNodeType nodeType;

            do
            {
                this.SkipSubtree();
                nodeType = this.NodeType;
                if (nodeType == XmlNodeType.Element && Ref.Equal(localName, this.LocalName) && Ref.Equal(namespaceURI, this.NamespaceURI))
                {
                    return(true);
                }
            }while (nodeType != XmlNodeType.EndElement && !this.EOF);
            return(false);
        }
Exemplo n.º 2
0
        // Reads to the next sibling of the current element with the given LocalName and NamespaceURI.
        public virtual bool ReadToNextSibling(string localName, string namespaceURI)
        {
            if (localName == null || localName.Length == 0)
            {
                throw XmlExceptionHelper.CreateInvalidNameArgumentException(localName, "localName");
            }

            if (namespaceURI == null)
            {
                throw new ArgumentNullException("namespaceURI");
            }

            // atomize local name and namespace
            localName    = NameTable.Add(localName);
            namespaceURI = NameTable.Add(namespaceURI);

            // find the next sibling
            XmlNodeType nt;

            do
            {
                SkipSubtree();
                nt = NodeType;
                if (nt == XmlNodeType.Element && Ref.Equal(localName, LocalName) && Ref.Equal(namespaceURI, NamespaceURI))
                {
                    return(true);
                }
            } while (nt != XmlNodeType.EndElement && !EOF);
            return(false);
        }
Exemplo n.º 3
0
        public virtual bool ReadToDescendant(string localName, string namespaceURI)
        {
            if (localName == null || localName.Length == 0)
            {
                throw XmlExceptionHelper.CreateInvalidNameArgumentException(localName, nameof(localName));
            }
            if (namespaceURI == null)
            {
                throw new ArgumentNullException(nameof(namespaceURI));
            }
            int depth = this.Depth;

            if (this.NodeType != XmlNodeType.Element)
            {
                if (this.ReadState != ReadState.Initial)
                {
                    return(false);
                }
                --depth;
            }
            else if (this.IsEmptyElement)
            {
                return(false);
            }
            localName    = this.NameTable.Add(localName);
            namespaceURI = this.NameTable.Add(namespaceURI);
            while (this.Read() && this.Depth > depth)
            {
                if (this.NodeType == XmlNodeType.Element && Ref.Equal(localName, this.LocalName) && Ref.Equal(namespaceURI, this.NamespaceURI))
                {
                    return(true);
                }
            }
            return(false);
        }
Exemplo n.º 4
0
        // Reads to the following element with the given LocalName and NamespaceURI.
        public virtual bool ReadToFollowing(string localName, string namespaceURI)
        {
            if (localName == null || localName.Length == 0)
            {
                throw XmlExceptionHelper.CreateInvalidNameArgumentException(localName, "localName");
            }

            if (namespaceURI == null)
            {
                throw new ArgumentNullException("namespaceURI");
            }

            // atomize local name and namespace
            localName    = NameTable.Add(localName);
            namespaceURI = NameTable.Add(namespaceURI);

            // find following element with that name
            while (Read())
            {
                if (NodeType == XmlNodeType.Element && Ref.Equal(localName, LocalName) && Ref.Equal(namespaceURI, NamespaceURI))
                {
                    return(true);
                }
            }

            return(false);
        }
Exemplo n.º 5
0
        // Reads to the first descendant of the current element with the given LocalName and NamespaceURI.
        public virtual bool ReadToDescendant(string localName, string namespaceURI)
        {
            if (localName == null || localName.Length == 0)
            {
                throw XmlExceptionHelper.CreateInvalidNameArgumentException(localName, "localName");
            }

            if (namespaceURI == null)
            {
                throw new ArgumentNullException("namespaceURI");
            }

            // save the element or root depth
            int parentDepth = Depth;

            if (NodeType != XmlNodeType.Element)
            {
                // adjust the depth if we are on root node
                if (ReadState == ReadState.Initial)
                {
                    Debug.Assert(parentDepth == 0);
                    parentDepth--;
                }
                else
                {
                    return(false);
                }
            }
            else if (IsEmptyElement)
            {
                return(false);
            }

            // atomize local name and namespace
            localName    = NameTable.Add(localName);
            namespaceURI = NameTable.Add(namespaceURI);

            // find the descendant
            while (Read() && Depth > parentDepth)
            {
                if (NodeType == XmlNodeType.Element && Ref.Equal(localName, LocalName) && Ref.Equal(namespaceURI, NamespaceURI))
                {
                    return(true);
                }
            }

            Debug.Assert(NodeType == XmlNodeType.EndElement || (parentDepth == -1 && ReadState == ReadState.EndOfFile));
            return(false);
        }
Exemplo n.º 6
0
 public virtual bool ReadToFollowing(string name)
 {
     if (name == null || name.Length == 0)
     {
         throw XmlExceptionHelper.CreateInvalidNameArgumentException(name, nameof(name));
     }
     name = this.NameTable.Add(name);
     while (this.Read())
     {
         if (this.NodeType == XmlNodeType.Element && Ref.Equal(name, this.Name))
         {
             return(true);
         }
     }
     return(false);
 }
Exemplo n.º 7
0
 public virtual bool ReadToFollowing(string localName, string namespaceURI)
 {
     if (localName == null || localName.Length == 0)
     {
         throw XmlExceptionHelper.CreateInvalidNameArgumentException(localName, nameof(localName));
     }
     if (namespaceURI == null)
     {
         throw new ArgumentNullException(nameof(namespaceURI));
     }
     localName    = this.NameTable.Add(localName);
     namespaceURI = this.NameTable.Add(namespaceURI);
     while (this.Read())
     {
         if (this.NodeType == XmlNodeType.Element && Ref.Equal(localName, this.LocalName) && Ref.Equal(namespaceURI, this.NamespaceURI))
         {
             return(true);
         }
     }
     return(false);
 }
Exemplo n.º 8
0
        // Reads to the following element with the given Name.
        public virtual bool ReadToFollowing(string name)
        {
            if (name == null || name.Length == 0)
            {
                throw XmlExceptionHelper.CreateInvalidNameArgumentException(name, "name");
            }

            // atomize name
            name = NameTable.Add(name);

            // find following element with that name
            while (Read())
            {
                if (NodeType == XmlNodeType.Element && Ref.Equal(name, Name))
                {
                    return(true);
                }
            }

            return(false);
        }
Exemplo n.º 9
0
 internal void CheckElement(string localName, string namespaceURI)
 {
     if (localName == null || localName.Length == 0)
     {
         throw XmlExceptionHelper.CreateInvalidNameArgumentException(localName, nameof(localName));
     }
     if (namespaceURI == null)
     {
         throw new ArgumentNullException(nameof(namespaceURI));
     }
     if (this.NodeType != XmlNodeType.Element)
     {
         throw new XmlException(27, this.NodeType.ToString(), this as IXmlLineInfo);
     }
     if (this.LocalName != localName || this.NamespaceURI != namespaceURI)
     {
         throw new XmlException(34, new string[2]
         {
             localName,
             namespaceURI
         }, this as IXmlLineInfo);
     }
 }
Exemplo n.º 10
0
        internal void CheckElement(string localName, string namespaceURI)
        {
            if (localName == null || localName.Length == 0)
            {
                throw XmlExceptionHelper.CreateInvalidNameArgumentException(localName, "localName");
            }

            if (namespaceURI == null)
            {
                throw new ArgumentNullException("namespaceURI");
            }

            if (NodeType != XmlNodeType.Element)
            {
                throw new XmlException(Res.Xml_InvalidNodeType, this.NodeType.ToString(), this as IXmlLineInfo);
            }

            if (LocalName != localName || NamespaceURI != namespaceURI)
            {
                throw new XmlException(Res.Xml_ElementNotFoundNs, new string[2] {
                    localName, namespaceURI
                }, this as IXmlLineInfo);
            }
        }
Exemplo n.º 11
0
        // Reads to the next sibling of the current element with the given Name.
        public virtual bool ReadToNextSibling(string name)
        {
            if (name == null || name.Length == 0)
            {
                throw XmlExceptionHelper.CreateInvalidNameArgumentException(name, "name");
            }

            // atomize name
            name = NameTable.Add(name);

            // find the next sibling
            XmlNodeType nt;

            do
            {
                SkipSubtree();
                nt = NodeType;
                if (nt == XmlNodeType.Element && Ref.Equal(name, Name))
                {
                    return(true);
                }
            } while (nt != XmlNodeType.EndElement && !EOF);
            return(false);
        }