复制代码代码如下:
pacote 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;
classe pública SaxXML {
public static void main(String[] args) {
Arquivo arquivo = new Arquivo("e:/People.xml");
tentar {
SAXParserFactory spf = SAXParserFactory.newInstance();
Analisador SAXParser = spf.newSAXParser();
Manipulador SaxHandler = new SaxHandler("Pessoas");
parser.parse(new FileInputStream(arquivo), manipulador);
List<Pessoas>pessoasList = handler.getPeoples();
for(Pessoas pessoas: listadepessoas){
System.out.println(people.getId()+"/t"+people.getName()+"/t"+people.getEnglishName()+"/t"+people.getAge());
}
} catch (Exceção e) {
// TODO Bloco catch gerado automaticamente
e.printStackTrace();
}
}
}
classe SaxHandler estende DefaultHandler {
private List<Pessoas> povos = null;
pessoas privadas;
private String currentTag = null;
private String valorAtual = null;
private String nodeName = null;
public List<Pessoas> getPessoas() {
retornar povos;
}
public SaxHandler(String nodeName) {
this.nodeName = nodeName;
}
@Substituir
public void startDocument() lança SAXException {
// TODO 当读到一个开始标签的时候,会触发这个方法
super.startDocument();
povos = new ArrayList<Pessoas>();
}
@Substituir
public void endDocument() lança SAXException {
// TODO 自动生成的方法存根
super.endDocument();
}
@Substituir
public void startElement(String uri, String localName, String nome,
Atributos atributos) lança SAXException {
// TODO 当遇到文档的开头的时候,调用这个方法
super.startElement(uri, localName, nome, atributos);
if (nome.equals(nodeName)) {
pessoas = novas Pessoas();
}
if (atributos! = null && pessoas! = null) {
for (int i = 0; i < atributos.getLength(); i++) {
if(atributos.getQName(i).equals("id")){
pessoas.setId(atributos.getValue(i));
}
senão if(attributes.getQName(i).equals("en")){
people.setEnglishName(attributes.getValue(i));
}
}
}
TagAtual = nome;
}
@Substituir
caracteres públicos vazios (char[] ch, int start, int length)
lança SAXException {
// TODO 这个方法用来处理在XML文件中读到的内容
super.characters(ch, início, comprimento);
if (tag atual! = nulo && pessoas! = nulo) {
currentValue = new String(ch, início, comprimento);
if (ValueAtual != null && !ValueAtual.trim().equals("") && !ValueAtual.trim().equals("/n")) {
if(currentTag.equals("Nome")){
pessoas.setName(ValorAtual);
}
senão if(currentTag.equals("Idade")){
pessoas.setAge(ValorAtual);
}
}
}
TagAtual = null;
valoratual = null;
}
@Substituir
public void endElement(String uri, String localName, String nome)
lança SAXException {
// TODO 在遇到结束标签的时候,调用这个方法
super.endElement(uri, nomelocal, nome);
if (nome.equals(nodeName)) {
pessoas.add(pessoas);
}
}
}