解析XML
这里使用Sax解析xml文件。
我们可以重写一下DefaultHandler
xml 解析练习
- 1, 获取解析工厂。
- 2, 从解析工厂获取解析器。
- 3, 编写处理器
- 4, 加载文档 注册处理器。
import org.xml.sax.SAXException;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import java.io.IOException;
import org.xml.sax.Attributes;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
/**
* xml 解析练习
* 1, 获取解析工厂。
* 2, 从解析工厂获取解析器。
* 3, 编写处理器
* 4, 加载文档 注册处理器。
*/
public class SaxText {
public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
// 1, 获取解析工厂。
SAXParserFactory factory = SAXParserFactory.newInstance();
// 2, 从解析工厂获取解析器。
SAXParser parser = factory.newSAXParser();
// 3, 编写处理器。
// 4, 加载文档 注册处理器。
// 重写一下 DefaultHandler就行了。
DefaultHandler handler = new PHandler();
// 5, 从当前类加载器中获取,
parser.parse(Thread.currentThread().getContextClassLoader().getResourceAsStream("123.xml"), handler);
}
}
class PHandler extends DefaultHandler{
@Override
public void startDocument() throws SAXException {
super.startDocument();
//接收文件开头的通知。
System.out.println("---文件加载从这里开始---");
}
@Override
public void endDocument() throws SAXException {
super.endDocument();
//接受文件结尾通知。
System.out.println("----文件加载这里结束");
}
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
super.startElement(uri, localName, qName, attributes);
// 接收元素开始通知。
System.out.println("---接受元素开始通知---");
}
@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
super.endElement(uri, localName, qName);
// 接受元素结尾通知。
System.out.println("---接受元素结尾通知---");
}
@Override
public void characters(char[] ch, int start, int length) throws SAXException {
super.characters(ch, start, length);
// 接收元素内的字符数据通知。
String contents = new String(ch,start,length).trim();
if(contents.length()>0) {
System.out.println("内容为->"+contents);
}else {
System.out.println("内容为->"+"空");
}
}
}
喜欢的话,给博主赏一杯冰阔乐吧