为什么我的setId报错

来源:3-4 使用 SAX 解析将 XML 的内容和结构存入 JAVA 对象

新手白

2018-06-02 17:24


package handler;


import java.awt.print.Book;


import org.xml.sax.Attributes;

import org.xml.sax.SAXException;

import org.xml.sax.helpers.DefaultHandler;


public class SAXParserHandler extends DefaultHandler {

int bookIndex = 0;

    /*

     *用来标识解析开始 

     */

    @Override

    public void startDocument() throws SAXException {

    super.startDocument();

    System.out.println("SAX解析开始");

    }

    /*

     *用来标识解析开始 

     */

    @Override

    public void endDocument() throws SAXException {

    super.endDocument();

    System.out.println("SAX解析结束");

    }

    /*

     *解析xml元素 

     */

    @Override

    public void startElement(String uri, String localName, String qName,

    Attributes attributes) throws SAXException {

    // 调用DefaultHandler类的startElement方法

    super.startElement(uri, localName, qName, attributes);

    //开始解析book元素的属性

    if (qName.equals("book")){

    bookIndex++;

      Book book = new Book();

    System.out.println("===================下面开始遍历第"+bookIndex+"本书的内容===================");

//           String value = attributes.getValue("id");

//     System.out.println("book的属性值是:" + value);

    int num = attributes.getLength();

    for (int i = 0;i < num;i++){

    System.out.print("book元素的第"+(i+1)+"个属性名是"

             +attributes.getQName(i));

    System.out.println("---属性值是:"+attributes.getValue(i));

    if (attributes.getQName(i).equals("id")){

    book.setId(attributes.getValue(i));

    }

    }

    }

    else if (!qName.equals("book") && !qName.equals("bookstore")){

    System.out.print("节点名是:"+qName);

    }

    }

    

    @Override

    public void endElement(String uri, String localName, String qName) throws SAXException {

    // 调用DefaultHandler类的endElement方法 

    super.endElement(uri, localName, qName);

    //判断是否针对一本书已经遍历结束

    if (qName.equals("book")){

System.out.println("===================结束遍历第"+bookIndex+"本书的内容===================");

    }

    }

    

    @Override

    public void characters(char[] ch, int start, int length) throws SAXException {

    // TODO 自动生成的方法存根

    super.characters(ch, start, length);

    String value = new String(ch, start, length);

    if(!value.trim().equals("")){

    System.out.println("---节点值是:"+value);

    }

    }

    

}



写回答 关注

1回答

  • 新手白
    2018-06-02 19:05:48

    多了一个book的导入

Java眼中的XML---文件读取

通过Java认识并且创造XML文件,如何应用 Java“解析 XML

83202 学习 · 431 问题

查看课程

相似问题