为了账号安全,请及时绑定邮箱和手机立即绑定

关于handle中重写startElement()方法中的参数问题

startElement(String uri, String localName, String qName,

Attributes attributes)中的参数在哪里传入handle对象的呀?主函数里新建了一个handle对象,也没传参数呀?尤其这个localName参数,都没有见到呀,或者是parse()函数传来的?


正在回答

3 回答

我感觉这个startElement方法应该是JAVA官方类的源代码中的方法,只有用法。当你主函数调用parse(uri,dh)时,parse方法就已经把xml文件进行解析,并且获取了你问题里的参数,这都是官方类的操作,我们看不到的。

1 回复 有任何疑惑可以回复我~
#1

0110号建筑师 提问者

非常感谢!
2017-06-05 回复 有任何疑惑可以回复我~

请注意看参数

0 回复 有任何疑惑可以回复我~

SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();

SAXParser saxParser = saxParserFactory.newSAXParser();

SaxParserHandler saxParserHandler = new SaxParserHandler();

saxParser.parse("books.xml", saxParserHandler);

//parse() 

public void parse(String uri, DefaultHandler dh)

        throws SAXException, IOException {

        if (uri == null) {

            throw new IllegalArgumentException("uri cannot be null");

        }


        InputSource input = new InputSource(uri);

        this.parse(input, dh);//------------执行到此处

    }


public void parse(InputSource is, DefaultHandler dh)

        throws SAXException, IOException {

        if (is == null) {

            throw new IllegalArgumentException("InputSource cannot be null");

        }


        XMLReader reader = this.getXMLReader();

        if (dh != null) {

            reader.setContentHandler(dh);

            reader.setEntityResolver(dh);

            reader.setErrorHandler(dh);

            reader.setDTDHandler(dh);

        }

        reader.parse(is);//----------

    }


 public void parse (InputSource input)

        throws IOException, SAXException;

//----------

void org.xml.sax.XMLReader





 /**

     * Receive notification of the start of an element.

     *

     * <p>By default, do nothing.  Application writers may override this

     * method in a subclass to take specific actions at the start of

     * each element (such as allocating a new tree node or writing

     * output to a file).</p>

     *

     * @param uri The Namespace URI, or the empty string if the

     *        element has no Namespace URI or if Namespace

     *        processing is not being performed.

     * @param localName The local name (without prefix), or the

     *        empty string if Namespace processing is not being

     *        performed.

     * @param qName The qualified name (with prefix), or the

     *        empty string if qualified names are not available.

     * @param attributes The attributes attached to the element.  If

     *        there are no attributes, it shall be an empty

     *        Attributes object.

     * @exception org.xml.sax.SAXException Any SAX exception, possibly

     *            wrapping another exception.

     * @see org.xml.sax.ContentHandler#startElement

     */

    public void startElement (String uri, String localName,

                              String qName, Attributes attributes)

        throws SAXException

    {

        // no op

    }


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

关于handle中重写startElement()方法中的参数问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信