/** 解析xml元素 */ @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { // 调用DefaultHandler类的startElement方法 super.startElement(uri, localName, qName, attributes); if (qName.equals("book")) { bookIndex++; // 创建一个book对象 book = new Book(); // 开始解析book元素的属性 System.out.println("======================开始遍历某一本书的内容================="); // //已知book元素下属性的名称,根据属性名称获取属性值 // String value = attributes.getValue("id"); // System.out.println("book的属性值是:" + value); // 不知道book元素下属性的名称以及个数,如何获取属性名以及属性值 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("name") && !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")) { bookList.add(book); book = null; System.out.println("======================结束遍历某一本书的内容================="); } else if (qName.equals("name")) { book.setName(value); } else if (qName.equals("author")) { book.setAuthor(value); } else if (qName.equals("year")) { book.setYear(value); } else if (qName.equals("price")) { book.setPrice(value); } else if (qName.equals("language")) { book.setLanguage(value); } }