java webserver-xml--熟悉SAX解析流程-存储

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java webserver-xml--熟悉SAX解析流程-存储相关的知识,希望对你有一定的参考价值。

public class n public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException //SAX解析 //1、获取解析工厂 SAXParserFactory factory=SAXParserFactory.newInstance(); //2、从解析工厂获取解析器 SAXParser parse =factory.newSAXParser(); //3、编写处理器 //4、加载文档 Document 注册处理器 PersonHandler handler=new PersonHandler(); //5、解析 parse.parse(Thread.currentThread().getContextClassLoader() .getResourceAsStream("hell\\pp.xml") ,handler); //获取数据 List<Person> persons=handler.getPersons(); for(Person p:persons) System.out.println(p.getName()+"-->"+p.getAge()); class PersonHandler extends DefaultHandler private List<Person> persons; private Person person; private String tag; //存储操作标签 @Override//开始文档 public void startDocument() throws SAXException persons =new ArrayList<Person>(); @Override//开始内容 public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException //qName获得标签 if(null!=qName) tag=qName;//存储标签 if(tag.equals("person")) person =new Person(); @Override//获得字符串内容 public void characters(char[] ch, int start, int length) throws SAXException String contents = new String(ch,start,length).trim(); if(null!=tag) //处理空的问题 if(tag.equals("name")) //当执行下一段时,tag还是name的标签,又会将空白setName()覆盖上次内容; person.setName(contents); else if(tag.equals("age")) if(contents.length()>0) person.setAge(Integer.valueOf(contents)); @Override//结束内容 public void endElement(String uri, String localName, String qName) throws SAXException if(null!=qName) //处理空 if(qName.equals("person")) persons.add(person); tag=null; //tag重赋值 @Override//结束文档 public void endDocument() throws SAXException public List<Person> getPersons() return persons; public void setPersons(List<Person> persons) this.persons = persons;

以上是关于java webserver-xml--熟悉SAX解析流程-存储的主要内容,如果未能解决你的问题,请参考以下文章

Java高级特性 第14节 解析XML文档 - SAX 技术

Java SAX解析

Java SAX 解析

使用 SAX 在 Java 中解析 XML:价值减半

org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; java sax解析xml文档遇到的问题

JAVA之DOM和SAX解析器