treewalkerimpl.java

来自「JAVA的一些源码 JAVA2 STANDARD EDITION DEVELO」· Java 代码 · 共 544 行 · 第 1/2 页

JAVA
544
字号
/* * The Apache Software License, Version 1.1 * * * Copyright (c) 1999-2002 The Apache Software Foundation.  All rights  * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer.  * * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in *    the documentation and/or other materials provided with the *    distribution. * * 3. The end-user documentation included with the redistribution, *    if any, must include the following acknowledgment:   *       "This product includes software developed by the *        Apache Software Foundation (http://www.apache.org/)." *    Alternately, this acknowledgment may appear in the software itself, *    if and wherever such third-party acknowledgments normally appear. * * 4. The names "Xerces" and "Apache Software Foundation" must *    not be used to endorse or promote products derived from this *    software without prior written permission. For written  *    permission, please contact apache@apache.org. * * 5. Products derived from this software may not be called "Apache", *    nor may "Apache" appear in their name, without prior written *    permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation and was * originally based on software copyright (c) 1999, International * Business Machines, Inc., http://www.apache.org.  For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */package com.sun.org.apache.xerces.internal.dom;import org.w3c.dom.DOMException;import org.w3c.dom.Node;import org.w3c.dom.traversal.NodeFilter;import org.w3c.dom.traversal.TreeWalker;/** This class implements the TreeWalker interface. *//** * @version $Id: TreeWalkerImpl.java,v 1.8 2003/07/29 18:29:40 elena Exp $ */public class TreeWalkerImpl implements TreeWalker {        //    // Data    //        /** When TRUE, the children of entites references are returned in the iterator. */    private boolean fEntityReferenceExpansion = false;    /** The whatToShow mask. */    int fWhatToShow = NodeFilter.SHOW_ALL;    /** The NodeFilter reference. */    NodeFilter fNodeFilter;    /** The current Node. */    Node fCurrentNode;    /** The root Node. */    Node fRoot;        //    // Implementation Note: No state is kept except the data above    // (fWhatToShow, fNodeFilter, fCurrentNode, fRoot) such that     // setters could be created for these data values and the     // implementation will still work.            //     // Constructor    //        /** Public constructor */    public TreeWalkerImpl(Node root,                           int whatToShow,                           NodeFilter nodeFilter,                          boolean entityReferenceExpansion) {        fCurrentNode = root;        fRoot = root;        fWhatToShow = whatToShow;        fNodeFilter = nodeFilter;        fEntityReferenceExpansion = entityReferenceExpansion;    }        public Node getRoot() {	return fRoot;    }    /** Return the whatToShow value */    public int                getWhatToShow() {        return fWhatToShow;    }    public void setWhatShow(int whatToShow){        fWhatToShow = whatToShow;    }    /** Return the NodeFilter */    public NodeFilter         getFilter() {        return fNodeFilter;    }        /** Return whether children entity references are included in the iterator. */    public boolean            getExpandEntityReferences() {        return fEntityReferenceExpansion;    }                /** Return the current Node. */    public Node               getCurrentNode() {        return fCurrentNode;    }    /** Return the current Node. */    public void               setCurrentNode(Node node) {        if (node == null) {            String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null);              throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);        }        fCurrentNode = node;    }        /** Return the parent Node from the current node,      *  after applying filter, whatToshow.     *  If result is not null, set the current Node.     */    public Node               parentNode() {        if (fCurrentNode == null) return null;                        Node node = getParentNode(fCurrentNode);        if (node !=null) {            fCurrentNode = node;        }        return node;            }    /** Return the first child Node from the current node,      *  after applying filter, whatToshow.     *  If result is not null, set the current Node.     */    public Node               firstChild() {                if (fCurrentNode == null) return null;                        Node node = getFirstChild(fCurrentNode);        if (node !=null) {            fCurrentNode = node;        }        return node;    }    /** Return the last child Node from the current node,      *  after applying filter, whatToshow.     *  If result is not null, set the current Node.     */    public Node               lastChild() {        if (fCurrentNode == null) return null;                        Node node = getLastChild(fCurrentNode);        if (node !=null) {            fCurrentNode = node;        }        return node;    }        /** Return the previous sibling Node from the current node,      *  after applying filter, whatToshow.     *  If result is not null, set the current Node.     */    public Node               previousSibling() {        if (fCurrentNode == null) return null;                        Node node = getPreviousSibling(fCurrentNode);        if (node !=null) {            fCurrentNode = node;        }        return node;    }        /** Return the next sibling Node from the current node,      *  after applying filter, whatToshow.     *  If result is not null, set the current Node.     */    public Node               nextSibling(){        if (fCurrentNode == null) return null;                        Node node = getNextSibling(fCurrentNode);        if (node !=null) {            fCurrentNode = node;        }        return node;    }        /** Return the previous Node from the current node,      *  after applying filter, whatToshow.     *  If result is not null, set the current Node.     */    public Node               previousNode() {        Node result;                if (fCurrentNode == null) return null;                // get sibling        result = getPreviousSibling(fCurrentNode);        if (result == null) {            result = getParentNode(fCurrentNode);            if (result != null) {                fCurrentNode = result;                return fCurrentNode;            }             return null;        }                // get the lastChild of result.        Node lastChild  = getLastChild(result);                Node prev = lastChild ;        while (lastChild != null) {          prev = lastChild ;          lastChild = getLastChild(prev) ;        }        lastChild = prev ;                // if there is a lastChild which passes filters return it.        if (lastChild != null) {            fCurrentNode = lastChild;            return fCurrentNode;        }                 // otherwise return the previous sibling.        if (result != null) {            fCurrentNode = result;            return fCurrentNode;        }                // otherwise return null.        return null;    }        /** Return the next Node from the current node,      *  after applying filter, whatToshow.     *  If result is not null, set the current Node.     */    public Node               nextNode() {        

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?