复制代码代码如下:
paquete com.test;
importar java.io.File;
importar java.io.FileInputStream;
importar java.util.ArrayList;
importar java.util.List;
importar javax.xml.parsers.SAXParser;
importar javax.xml.parsers.SAXParserFactory;
importar org.xml.sax.Attributes;
importar org.xml.sax.SAXException;
importar org.xml.sax.helpers.DefaultHandler;
clase pública SaxXML {
público estático vacío principal (String [] argumentos) {
Archivo archivo = nuevo Archivo("e:/People.xml");
intentar {
SAXParserFactory spf = SAXParserFactory.newInstance();
Analizador SAXParser = spf.newSAXParser();
Controlador SaxHandler = new SaxHandler ("Personas");
parser.parse(new FileInputStream(archivo), controlador);
Lista<Personas> lista de personas = handler.getPeoples();
para(Personas personas: lista de personas){
System.out.println(people.getId()+"/t"+people.getName()+"/t"+people.getEnglishName()+"/t"+people.getAge());
}
} captura (Excepción e) {
// TODO Bloque de captura generado automáticamente
e.printStackTrace();
}
}
}
clase SaxHandler extiende DefaultHandler {
Lista privada<Personas> pueblos = null;
personas privadas personas;
cadena privada etiqueta actual = nula;
cadena privada valor actual = nulo;
nombre de nodo de cadena privada = nulo;
Lista pública<Personas> getPersonas() {
pueblos de retorno;
}
public SaxHandler (nombre de nodo de cadena) {
this.nodeName = nodeName;
}
@Anular
startDocument public void() lanza SAXException {
// TODO 当读到一个开始标签的时候,会触发这个方法
super.startDocument();
pueblos = nueva ArrayList<Personas>();
}
@Anular
endDocument public void() lanza SAXException {
// TODO 自动生成的方法存根
super.endDocument();
}
@Anular
elemento de inicio público vacío (uri de cadena, nombre local de cadena, nombre de cadena,
Atributos atributos) lanza SAXException {
// TODO 当遇到文档的开头的时候,调用这个方法
super.startElement(uri, nombre local, nombre, atributos);
if (nombre.equals(nombrenodo)) {
gente = nueva gente();
}
if (atributos!= nulo && personas!= nulo) {
para (int i = 0; i < atributos.getLength(); i++) {
if(atributos.getQName(i).equals("id")){
personas.setId(atributos.getValue(i));
}
else if(attributes.getQName(i).equals("es")){
personas.setEnglishName(atributos.getValue(i));
}
}
}
etiqueta actual = nombre;
}
@Anular
caracteres públicos vacíos (char[] ch, int inicio, int longitud)
lanza SAXException {
// TODO 这个方法用来处理在XML文件中读到的内容
super.caracteres(canal, inicio, longitud);
if (etiqueta actual! = nulo && personas! = nulo) {
valoractual = nueva cadena (canal, inicio, longitud);
if (valoractual!= nulo &&!valoractual.trim().equals("") && !valoractual.trim().equals("/n")) {
if(currentTag.equals("Nombre")){
personas.setName(currentValue);
}
else if(currentTag.equals("Edad")){
personas.setAge(currentValue);
}
}
}
etiqueta actual = nulo;
ValorActual = nulo;
}
@Anular
elemento final vacío público (uri de cadena, nombre local de cadena, nombre de cadena)
lanza SAXException {
// TODO 在遇到结束标签的时候,调用这个方法
super.endElement(uri, nombre local, nombre);
if (nombre.equals(nombrenodo)) {
pueblos.add(personas);
}
}
}