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

📄 attributes.java

📁 本程序用于对页面信息进行提取并分析
💻 JAVA
字号:
// HTMLParser Library $Name: v1_6_20060319 $ - A java-based parser for HTML// http://sourceforge.org/projects/htmlparser// Copyright (C) 2004 Derrick Oswald//// Revision Control Information//// $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/sax/Attributes.java,v $// $Author: derrickoswald $// $Date: 2004/07/14 01:58:02 $// $Revision: 1.1 $//// This library is free software; you can redistribute it and/or// modify it under the terms of the GNU Lesser General Public// License as published by the Free Software Foundation; either// version 2.1 of the License, or (at your option) any later version.//// This library is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU// Lesser General Public License for more details.//// You should have received a copy of the GNU Lesser General Public// License along with this library; if not, write to the Free Software// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA//package org.htmlparser.sax;import java.util.Vector;import org.htmlparser.Attribute;import org.htmlparser.Tag;import org.xml.sax.helpers.NamespaceSupport;/** * Provides access to the tag attributes. */public class Attributes    implements        org.xml.sax.Attributes{    /**     * The tag from which attributes are exposed.     */    protected Tag mTag;        /**     * The utility class that converts namespaces.     */    protected NamespaceSupport mSupport;    /**     * Elements of the qname.     * Allocated once for all uses of {@link #mSupport}.     */    protected String[] mParts;    /**     * Create an attibute access object.     * @param tag The tag to expose.     * @param support The namespace converter.     * @param parts The elements of the qualified name.     */    public Attributes (Tag tag, NamespaceSupport support, String[] parts)    {        mTag = tag;        mSupport = support;        mParts = parts;    }        ////////////////////////////////////////////////////////////////////    // Indexed access.    ////////////////////////////////////////////////////////////////////    /**     * Return the number of attributes in the list.     *     * <p>Once you know the number of attributes, you can iterate     * through the list.</p>     *     * @return The number of attributes in the list.     * @see #getURI(int)     * @see #getLocalName(int)     * @see #getQName(int)     * @see #getType(int)     * @see #getValue(int)     */    public int getLength ()    {        return (mTag.getAttributesEx ().size () - 1);    }    /**     * Look up an attribute's Namespace URI by index.     *     * @param index The attribute index (zero-based).     * @return The Namespace URI, or the empty string if none     *         is available, or null if the index is out of     *         range.     * @see #getLength     */    public String getURI (int index)    {        mSupport.processName (getQName (index), mParts, true);        return (mParts[0]);    }    /**     * Look up an attribute's local name by index.     *     * @param index The attribute index (zero-based).     * @return The local name, or the empty string if Namespace     *         processing is not being performed, or null     *         if the index is out of range.     * @see #getLength     */    public String getLocalName (int index)    {        mSupport.processName (getQName (index), mParts, true);        return (mParts[1]);    }    /**     * Look up an attribute's XML qualified (prefixed) name by index.     *     * @param index The attribute index (zero-based).     * @return The XML qualified name, or the empty string     *         if none is available, or null if the index     *         is out of range.     * @see #getLength     */    public String getQName (int index)    {        Attribute attribute;        String ret;                attribute = (Attribute)(mTag.getAttributesEx ().elementAt (index + 1));        if (attribute.isWhitespace ())            ret = "#text";        else            ret = attribute.getName ();                return (ret);    }    /**     * Look up an attribute's type by index.     *     * <p>The attribute type is one of the strings "CDATA", "ID",     * "IDREF", "IDREFS", "NMTOKEN", "NMTOKENS", "ENTITY", "ENTITIES",     * or "NOTATION" (always in upper case).</p>     *     * <p>If the parser has not read a declaration for the attribute,     * or if the parser does not report attribute types, then it must     * return the value "CDATA" as stated in the XML 1.0 Recommendation     * (clause 3.3.3, "Attribute-Value Normalization").</p>     *     * <p>For an enumerated attribute that is not a notation, the     * parser will report the type as "NMTOKEN".</p>     *     * @param index The attribute index (zero-based).     * @return The attribute's type as a string, or null if the     *         index is out of range.     * @see #getLength     */    public String getType (int index)    {        return ("CDATA");    }    /**     * Look up an attribute's value by index.     *     * <p>If the attribute value is a list of tokens (IDREFS,     * ENTITIES, or NMTOKENS), the tokens will be concatenated     * into a single string with each token separated by a     * single space.</p>     *     * @param index The attribute index (zero-based).     * @return The attribute's value as a string, or null if the     *         index is out of range.     * @see #getLength     */    public String getValue (int index)    {        Attribute attribute;        String ret;                attribute = (Attribute)(mTag.getAttributesEx ().elementAt (index + 1));        ret = attribute.getValue ();        if (null == ret)            ret = "";        return (ret);    }    ////////////////////////////////////////////////////////////////////    // Name-based query.    ////////////////////////////////////////////////////////////////////    /**     * Look up the index of an attribute by Namespace name.     *     * @param uri The Namespace URI, or the empty string if     *        the name has no Namespace URI.     * @param localName The attribute's local name.     * @return The index of the attribute, or -1 if it does not     *         appear in the list.     */    public int getIndex (String uri, String localName)    {        Vector attributes;        int size;        Attribute attribute;        String string;        int ret;        ret = -1;        attributes = mTag.getAttributesEx ();        if (null != attributes)        {            size = attributes.size ();            for (int i = 1; i < size; i++)            {                attribute = (Attribute)attributes.elementAt (i);                string = attribute.getName ();                if (null != string) // not whitespace                {                    mSupport.processName (string, mParts, true);                    if (  uri.equals (mParts[0])                        & localName.equalsIgnoreCase (mParts[1]))                    {                        ret = i;                        i = size; // exit fast                    }                }            }        }        return (ret);    }    /**     * Look up the index of an attribute by XML qualified (prefixed) name.     *     * @param qName The qualified (prefixed) name.     * @return The index of the attribute, or -1 if it does not     *         appear in the list.     */    public int getIndex (String qName)    {        mSupport.processName (qName, mParts, true);        return (getIndex (mParts[0], mParts[1]));    }    /**     * Look up an attribute's type by Namespace name.     *     * <p>See {@link #getType(int) getType(int)} for a description     * of the possible types.</p>     *     * @param uri The Namespace URI, or the empty String if the     *        name has no Namespace URI.     * @param localName The local name of the attribute.     * @return The attribute type as a string, or null if the     *         attribute is not in the list or if Namespace     *         processing is not being performed.     */    public String getType (String uri, String localName)    {        return (null);    }    /**     * Look up an attribute's type by XML qualified (prefixed) name.     *     * <p>See {@link #getType(int) getType(int)} for a description     * of the possible types.</p>     *     * @param qName The XML qualified name.     * @return The attribute type as a string, or null if the     *         attribute is not in the list or if qualified names     *         are not available.     */    public String getType (String qName)    {        return (null);    }    /**     * Look up an attribute's value by Namespace name.     *     * <p>See {@link #getValue(int) getValue(int)} for a description     * of the possible values.</p>     *     * @param uri The Namespace URI, or the empty String if the     *        name has no Namespace URI.     * @param localName The local name of the attribute.     * @return The attribute value as a string, or null if the     *         attribute is not in the list.     */    public String getValue (String uri, String localName)    {        return (mTag.getAttribute (localName));    }    /**     * Look up an attribute's value by XML qualified (prefixed) name.     *     * <p>See {@link #getValue(int) getValue(int)} for a description     * of the possible values.</p>     *     * @param qName The XML qualified name.     * @return The attribute value as a string, or null if the     *         attribute is not in the list or if qualified names     *         are not available.     */    public String getValue (String qName)    {        mSupport.processName (qName, mParts, true);        return (getValue (mParts[0], mParts[1]));    }}

⌨️ 快捷键说明

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