⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 parsedhtml.java

📁 一个比较不错的java分页标签,有源代码,开发者 可以学习学习
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
    private Button toButtonWithoutForm(Element element)
    {
        return new Button(_response, element);
    }

    private WebForm toWebForm(Element element)
    {
        return new WebForm(_response, _baseURL, element, _frame, _baseTarget, _characterSet);
    }

    private WebFrame toWebFrame(Element element)
    {
        return new WebFrame(_response, _baseURL, element, _frame);
    }

    private WebFrame toWebIFrame(Element element)
    {
        return new WebIFrame(_baseURL, element, _frame);
    }

    private WebLink toLinkAnchor(Element child)
    {
        return (!isWebLink(child)) ? null : new WebLink(_response, _baseURL, child, _frame, _baseTarget, _characterSet);
    }

    private boolean isWebLink(Node node)
    {
        return (node.getAttributes().getNamedItem("href") != null);
    }

    private WebImage toWebImage(Element child)
    {
        return new WebImage(_response, this, _baseURL, child, _frame, _baseTarget, _characterSet);
    }

    private WebApplet toWebApplet(Element element)
    {
        return new WebApplet(_response, element, _baseTarget);
    }

    private WebTable toWebTable(Element element)
    {
        return new WebTable(_response, _frame, element, _baseURL, _baseTarget, _characterSet);
    }

    private TextBlock toTextBlock(Element element)
    {
        return new TextBlock(_response, _frame, _baseURL, _baseTarget, element, _characterSet);
    }

    private TextBlock newTextBlock(Node textNode)
    {
        return new TextBlock(_response, _frame, _baseURL, _baseTarget, textNode, _characterSet);
    }

    private WebList toOrderedList(Element element)
    {
        return new WebList(_response, _frame, _baseURL, _baseTarget, element, _characterSet);
    }

    private void addToMaps(Node node, HTMLElement htmlElement)
    {
        _elements.put(node, htmlElement);
        if (htmlElement.getID() != null)
            _elementsByID.put(htmlElement.getID(), htmlElement);
        if (htmlElement.getName() != null)
            addNamedElement(htmlElement.getName(), htmlElement);
    }

    private void addNamedElement(String name, HTMLElement htmlElement)
    {
        List list = (List) _elementsByName.get(name);
        if (list == null)
            _elementsByName.put(name, list = new ArrayList());
        list.add(htmlElement);
    }

    private void addToList(HTMLElement htmlElement)
    {
        ArrayList list = getListForElement(htmlElement);
        if (list != null)
            list.add(htmlElement);
    }

    private ArrayList getListForElement(HTMLElement element)
    {
        if (element instanceof WebLink)
            return _linkList;
        if (element instanceof WebForm)
            return _formsList;
        if (element instanceof WebImage)
            return _imagesList;
        if (element instanceof WebApplet)
            return _appletList;
        if (element instanceof WebTable)
            return _tableList;
        if (element instanceof WebFrame)
            return _frameList;
        if (element instanceof BlockElement)
            return _blocksList;
        return null;
    }

    /**
     * Returns the first link which contains the specified text.
     */
    public WebLink getLinkWith(String text)
    {
        return getFirstMatchingLink(WebLink.MATCH_CONTAINED_TEXT, text);
    }

    /**
     * Returns the link which contains the first image with the specified text as its 'alt' attribute.
     */
    public WebLink getLinkWithImageText(String text)
    {
        WebImage image = getImageWithAltText(text);
        return image == null ? null : image.getLink();
    }

    /**
     * Returns the link found in the page with the specified name.
     */
    public WebLink getLinkWithName(String name)
    {
        return getFirstMatchingLink(WebLink.MATCH_NAME, name);
    }

    /**
     * Returns the first link found in the page matching the specified criteria.
     */
    public WebLink getFirstMatchingLink(HTMLElementPredicate predicate, Object criteria)
    {
        WebLink[] links = getLinks();
        for (int i = 0; i < links.length; i++)
        {
            if (predicate.matchesCriteria(links[i], criteria))
                return links[i];
        }
        return null;
    }

    /**
     * Returns all links found in the page matching the specified criteria.
     */
    public WebLink[] getMatchingLinks(HTMLElementPredicate predicate, Object criteria)
    {
        ArrayList matches = new ArrayList();
        WebLink[] links = getLinks();
        for (int i = 0; i < links.length; i++)
        {
            if (predicate.matchesCriteria(links[i], criteria))
                matches.add(links[i]);
        }
        return (WebLink[]) matches.toArray(new WebLink[matches.size()]);
    }

    /**
     * Returns the image found in the page with the specified name.
     */
    public WebImage getImageWithName(String name)
    {
        WebImage[] images = getImages();
        for (int i = 0; i < images.length; i++)
        {
            if (HttpUnitUtils.matches(name, images[i].getName()))
                return images[i];
        }
        return null;
    }

    /**
     * Returns the first image found in the page with the specified src attribute.
     */
    public WebImage getImageWithSource(String source)
    {
        WebImage[] images = getImages();
        for (int i = 0; i < images.length; i++)
        {
            if (HttpUnitUtils.matches(source, images[i].getSource()))
                return images[i];
        }
        return null;
    }

    /**
     * Returns the first image found in the page with the specified alt attribute.
     */
    public WebImage getImageWithAltText(String altText)
    {
        WebImage[] images = getImages();
        for (int i = 0; i < images.length; i++)
        {
            if (HttpUnitUtils.matches(altText, images[i].getAltText()))
                return images[i];
        }
        return null;
    }

    /**
     * Returns the first table in the response which matches the specified predicate and value. Will recurse into any
     * nested tables, as needed.
     * @return the selected table, or null if none is found
     */
    public WebTable getFirstMatchingTable(HTMLElementPredicate predicate, Object criteria)
    {
        return getTableSatisfyingPredicate(getTables(), predicate, criteria);
    }

    /**
     * Returns the tables in the response which match the specified predicate and value. Will recurse into any nested
     * tables, as needed.
     * @return the selected tables, or null if none are found
     */
    public WebTable[] getMatchingTables(HTMLElementPredicate predicate, Object criteria)
    {
        return getTablesSatisfyingPredicate(getTables(), predicate, criteria);
    }

    /**
     * Returns the first table in the response which has the specified text as the full text of its first non-blank row
     * and non-blank column. Will recurse into any nested tables, as needed.
     * @return the selected table, or null if none is found
     */
    public WebTable getTableStartingWith(String text)
    {
        return getFirstMatchingTable(WebTable.MATCH_FIRST_NONBLANK_CELL, text);
    }

    /**
     * Returns the first table in the response which has the specified text as a prefix of the text in its first
     * non-blank row and non-blank column. Will recurse into any nested tables, as needed.
     * @return the selected table, or null if none is found
     */
    public WebTable getTableStartingWithPrefix(String text)
    {
        return getFirstMatchingTable(WebTable.MATCH_FIRST_NONBLANK_CELL_PREFIX, text);
    }

    /**
     * Returns the first table in the response which has the specified text as its summary attribute. Will recurse into
     * any nested tables, as needed.
     * @return the selected table, or null if none is found
     */
    public WebTable getTableWithSummary(String summary)
    {
        return getFirstMatchingTable(WebTable.MATCH_SUMMARY, summary);
    }

    /**
     * Returns the first table in the response which has the specified text as its ID attribute. Will recurse into any
     * nested tables, as needed.
     * @return the selected table, or null if none is found
     */
    public WebTable getTableWithID(String ID)
    {
        return getFirstMatchingTable(WebTable.MATCH_ID, ID);
    }

    /**
     * Returns a copy of the domain object model associated with this page.
     */
    public Node getDOM()
    {
        return getRootNode().cloneNode( /* deep */true);
    }

    // ---------------------------------- Object methods --------------------------------

    public String toString()
    {
        return _baseURL.toExternalForm() + System.getProperty("line.separator") + _rootNode;
    }

    // ---------------------------------- package members --------------------------------

    /**
     * Specifies the root node for this HTML fragment.
     */
    void setRootNode(Node rootNode)
    {
        if (_rootNode != null && rootNode != _rootNode)
            throw new IllegalStateException("The root node has already been defined as "
                + _rootNode
                + " and cannot be redefined as "
                + rootNode);
        _rootNode = rootNode;
        _links = null;
        _forms = null;
        _images = null;
        _applets = null;
        _tables = null;
        _frames = null;
        _blocks = null;
        _updateElements = true;
    }

    /**
     * Returns the base URL for this HTML segment.
     */
    URL getBaseURL()
    {
        return _baseURL;
    }

    WebResponse getResponse()
    {
        return _response;
    }

    /**
     * Returns the domain object model associated with this page, to be used internally.
     */
    Node getOriginalDOM()
    {
        return getRootNode();
    }

    /**
     * Returns the frames found in the page in the order in which they appear.
     */
    public WebFrame[] getFrames()
    {
        if (_frames == null)
        {
            loadElements();
            _frames = (WebFrame[]) _frameList.toArray(new WebFrame[_frameList.size()]);
        }
        return _frames;
    }

    // ---------------------------------- private members --------------------------------

    Node getRootNode()
    {
        if (_rootNode == null)
            throw new IllegalStateException("The root node has not been specified");
        return _rootNode;
    }

    /**
     * Returns the table with the specified text in its summary attribute.
     */
    private WebTable getTableSatisfyingPredicate(WebTable[] tables, HTMLElementPredicate predicate, Object value)
    {
        for (int i = 0; i < tables.length; i++)
        {
            if (predicate.matchesCriteria(tables[i], value))
            {
                return tables[i];
            }
            else
            {
                for (int j = 0; j < tables[i].getRowCount(); j++)
                {
                    for (int k = 0; k < tables[i].getColumnCount(); k++)
                    {
                        TableCell cell = tables[i].getTableCell(j, k);
                        if (cell != null)
                        {
                            WebTable[] innerTables = cell.getTables();
                            if (innerTables.length != 0)
                            {
                                WebTable result = getTableSatisfyingPredicate(innerTables, predicate, value);
                                if (result != null)
                                    return result;
                            }
                        }
                    }
                }
            }
        }
        return null;
    }

    /**
     * Returns the tables which match the specified criteria.
     */
    private WebTable[] getTablesSatisfyingPredicate(WebTable[] tables, HTMLElementPredicate predicate, Object value)
    {
        ArrayList matches = new ArrayList();
        for (int i = 0; i < tables.length; i++)
        {
            if (predicate.matchesCriteria(tables[i], value))
            {
                matches.add(tables[i]);
            }
            for (int j = 0; j < tables[i].getRowCount(); j++)
            {
                for (int k = 0; k < tables[i].getColumnCount(); k++)
                {
                    TableCell cell = tables[i].getTableCell(j, k);
                    if (cell != null)
                    {
                        WebTable[] innerTables = cell.getTables();
                        if (innerTables.length != 0)
                        {
                            WebTable[] result = getTablesSatisfyingPredicate(innerTables, predicate, value);
                            if (result != null && result.length > 0)
                            {
                                for (int l = 0; l < result.length; l++)
                                {
                                    matches.add(result[l]);
                                }
                            }
                        }
                    }
                }
            }
        }
        if (matches.size() > 0)
        {
            return (WebTable[]) matches.toArray(new WebTable[matches.size()]);
        }
        else
        {
            return null;
        }
    }

    class WebIFrame extends WebFrame implements ContentConcealer
    {

        public WebIFrame(URL baseURL, Node frameNode, FrameSelector parentFrame)
        {
            super(_response, baseURL, frameNode, parentFrame);
        }
    }

    class NoScriptElement extends HTMLElementBase implements ContentConcealer
    {

        public NoScriptElement(Node node)
        {
            super(node);
        }

        protected ScriptableDelegate newScriptable()
        {
            return null;
        }

        protected ScriptableDelegate getParentDelegate()
        {
            return null;
        }
    }

}

⌨️ 快捷键说明

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