XML解析之sax解析案例(二)使用sax解析把 xml文档封装成对象

互联网 17-2-16
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);  		}  	}  }
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;//用于方法跨度使用变量。    	@Override  	public 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值  		}  	}  	  	@Override  	public 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);  		}  	}  	  	@Override  	public 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)!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:用xml和xsl做网页实例

相关资讯