XML解析之sax解析案例(二)使用sax解析把 xml文档封装成对象
16lz
2021-01-22
Demo1类:
import java.io.File;import java.util.List;import javax.xml.parsers.SAXParser;import javax.xml.parsers.SAXParserFactory;/** * 使用sax解析把 xml文档封装成对象 * @author APPle * */public class Demo3 {public static void main(String[] args)throws Exception {SAXParser parser = SAXParserFactory.newInstance().newSAXParser();MyDefaultHandler3 handler = new MyDefaultHandler3();parser.parse(new File("./src/contact.xml"), handler);List<Contact> list = handler.getList();for (Contact contact : list) {System.out.println(contact);}}}
MyDefaultHandler3类:
import java.util.ArrayList;import java.util.List;import org.xml.sax.Attributes;import org.xml.sax.SAXException;import org.xml.sax.helpers.DefaultHandler;/** * SAX处理程序 * @author APPle * */public class MyDefaultHandler3 extends DefaultHandler {//存储所有联系人对象private List<Contact> list = new ArrayList<Contact>();public List<Contact> getList(){return list;}//保存一个联系人信息private Contact contact;/** * 思路: * 1)创建Contact对象 * 2)把每个contact标签内容存入到Contact对象 * 3)把Contact对象放入List中 *///用于临时存储当前读到的标签名private String curTag;//用于方法跨度使用变量。@Overridepublic void startElement(String uri, String localName, String qName,Attributes attributes) throws SAXException {curTag = qName;//读取到contact的开始标签创建Contact对象,这里说明了什么时候创建Content对象最合适。if("contact".equals(qName)){contact = new Contact();//设置id值contact.setId(attributes.getValue("id"));//根据指定名字获取id值}}@Overridepublic void characters(char[] ch, int start, int length)throws SAXException {//当前文本内容String content = new String(ch,start,length);//String类构造方法获取到当前文本的额内容。if("name".equals(curTag)){contact.setName(content);}if("age".equals(curTag)){contact.setAge(content);}if("phone".equals(curTag)){contact.setPhone(content);}if("email".equals(curTag)){contact.setEmail(content);}if("qq".equals(curTag)){contact.setQq(content);}}@Overridepublic void endElement(String uri, String localName, String qName)throws SAXException {//结束标签后就设置null。这里设置为null很重要。设置空是为了避免空格换行设置到对象的属性中,空格换行进去了就把原来放进去的数据覆盖掉。curTag = null;//读到Contact的结束标签把content对象放入List中if("contact".equals(qName)){list.add(contact);}}}
以上就是XML解析之sax解析案例(二)使用sax解析把 xml文档封装成对象的内容,更多相关内容请关注PHP中文网(www.php.cn)!
更多相关文章
- Java&Xml教程(八)使用JDOM将Java对象转换为XML
- Java&Xml教程(十一)JAXB实现XML与Java对象转换
- Java对象、Json、Xml转换工具Jackson使用
- ajax的xmlHttpRequest对象
- 利用XMLSerializer将对象串行化到XML
- Web设计中如何使用XML数据源对象详细介绍
- XmlSerializer 对象的Xml序列化和反序列化的示例代码分析
- XML中的树形结构与DOM文档对象模型的示例代码(图)
- XML中的标签与元素的使用具体介绍