复制代码代码如下:
пакет com.test;
импортировать java.io.File;
импортировать java.io.FileInputStream;
импортировать java.util.ArrayList;
импортировать java.util.List;
импортировать javax.xml.parsers.SAXParser;
импортировать javax.xml.parsers.SAXParserFactory;
импортировать org.xml.sax.Attributes;
импортировать org.xml.sax.SAXException;
импортировать org.xml.sax.helpers.DefaultHandler;
общественный класс SaxXML {
public static void main(String[] args) {
Файл файл = новый файл("e:/People.xml");
пытаться {
SAXParserFactory spf = SAXParserFactory.newInstance();
Парсер SAXParser = spf.newSAXParser();
Обработчик SaxHandler = новый SaxHandler("Люди");
parser.parse(новый FileInputStream(файл), обработчик);
List<People>peopleList = handler.getPeoples();
for(Люди люди: PeopleList){
System.out.println(people.getId()+"/t"+people.getName()+"/t"+people.getEnglishName()+"/t"+people.getAge());
}
} catch (Исключение е) {
// TODO Автоматически сгенерированный блок catch
е.printStackTrace();
}
}
}
класс SaxHandler расширяет DefaultHandler {
частный список<Люди> люди = ноль;
частные люди люди;
частная строка currentTag = null;
частная строка currentValue = null;
частная строка nodeName = null;
публичный список<Люди> getPeoples() {
возвращение народов;
}
public SaxHandler (String nodeName) {
this.nodeName = имя_узла;
}
@Override
public void startDocument() выдает исключение SAXException {
// TODO 当读到一个开始标签的时候,伌会触发这个方法
супер.startDocument();
люди = новый ArrayList<People>();
}
@Override
public void endDocument() выдает исключение SAXException {
// TODO 自动生成的方法存根
супер.конечныйДокумент();
}
@Override
public void startElement (String uri, String localName, String name,
Атрибуты атрибутов) выдает SAXException {
// TODO 当遇到文档的开头的时候,调用这个方法
super.startElement(uri, localName, имя, атрибуты);
если (name.equals(nodeName)) {
люди = новые люди();
}
if (атрибуты != null && люди != null) {
for (int i = 0; i <attributes.getLength(); i++) {
if(attributes.getQName(i).equals("id")){
люди.setId(attributes.getValue(i));
}
иначе if(attributes.getQName(i).equals("en")){
люди.setEnglishName(attributes.getValue(i));
}
}
}
текущийТег = имя;
}
@Override
публичные недействительные символы (char[] ch, int start, int length)
выдает SAXException {
// TODO 这个方法用来处理在XML文件中读到的内容
super.characters(ch, начало, длина);
if (currentTag != null && люди != null) {
currentValue = новая строка (ch, начало, длина);
if (currentValue != null && !currentValue.trim().equals("") && !currentValue.trim().equals("/n")) {
if(currentTag.equals("Имя")){
люди.setName(текущее значение);
}
иначе if(currentTag.equals("Возраст")){
люди.setAge(currentValue);
}
}
}
текущийТег = ноль;
текущеезначение = ноль;
}
@Override
public void endElement (String uri, String localName, String name)
выдает SAXException {
// TODO 在遇到结束标签的时候,调用这个方法
super.endElement(uri, localName, name);
если (name.equals(nodeName)) {
люди.добавить(люди);
}
}
}