Java的SAX解析代码二

本文介绍了一个使用Java SAX API解析XML文件的具体示例。通过继承DefaultHandler类并重写关键方法,实现了对XML文件中特定元素的遍历与属性读取。文中详细展示了如何处理开始标签、结束标签及文本内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.imooc.learn2;


import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;


public  class SaxParseHandler extends DefaultHandler {
private static int c=0;
/**
* 用来遍历xml文件的开始标签
*@Descriptioon
* @作者 豆云谦
*@Create 下午8:01:39
*/
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
// TODO Auto-generated method stub
super.startElement(uri, localName, qName, attributes);

if (qName.equals("book")) {
c=c+1;
System.out.println("======开始遍历第"+(c)+"本书=====");
//已知book的属性名称,获取属性值
// String value=attributes.getValue("id");
// System.out.println("book的id属性值是:"+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));
}

}else if (!qName.equals("bookstore") && !qName.equals("book")) {
System.out.print("节点名是:"+qName);

}
}
/**
* 用来遍历xml的结束标签
*@Descriptioon
* @作者 豆云谦
*@Create 下午8:01:52
*/
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
// TODO Auto-generated method stub
super.endElement(uri, localName, qName);
if (qName.equals("book")) {
System.out.println("======结束遍历第"+(c)+"本书=====");
}


}
/**
* 用来标志解析开始
*@Descriptioon
* @作者 豆云谦
*@Create 下午8:02:43
*/
@Override
public void startDocument() throws SAXException {
// TODO Auto-generated method stub
super.startDocument();
System.out.println("Sax解析开始");
}
/**
* 用来标志解析结束
*@Descriptioon
* @作者 豆云谦
*@Create 下午8:03:05
*/
@Override
public void endDocument() throws SAXException {
// TODO Auto-generated method stub
super.endDocument();
System.out.println("Sax解析结束");
}
/**

*@Descriptioon
* @作者 豆云谦
*@Create 下午8:42:20
*/
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
// TODO Auto-generated method stub
super.characters(ch, start, length);
String value=new String(ch, start, length);
if (!value.trim().equals("")) {
System.out.println(">>>"+value);
}
}


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值