加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

XML文件解析

发布时间:2020-12-16 05:55:09 所属栏目:百科 来源:网络整理
导读:public class saxHandler extends DefaultHandler {HashMapString,String map=null;ListHashMapString,String list=null;String currentTag=null;String currentValue=null;String nodeName=null;public saxHandler(String nodeName) {this.nodeName = nodeN


public class saxHandler extends DefaultHandler {
	
	HashMap<String,String> map=null;
	List<HashMap<String,String>> list=null;
	String currentTag=null;
	String currentValue=null;
	String nodeName=null;

	public saxHandler(String nodeName) {
		this.nodeName = nodeName;
	}


	public List<HashMap<String,String>> getList() {
		return list;
	}


	@Override
	public void startDocument() throws SAXException {
		list=new ArrayList<HashMap<String,String>>();
	}

	@Override
	public void startElement(String uri,String localName,String qName,Attributes attributes) throws SAXException {
		if(qName.equals(nodeName))
		{
			map=new HashMap<String,String>();
		}
		if(map!=null && attributes!=null)
		{
		    for(int i=0;i<attributes.getLength();i++)
		    	{
		    	    map.put(attributes.getQName(i),attributes.getValue(i));
		    	}
		}
		currentTag=qName;
	}
	
	@Override
	public void characters(char[] ch,int start,int length)
			throws SAXException {
		if(map!=null && currentTag!=null)
			currentValue=new String(ch,start,length);
		if(currentValue!=null && !currentValue.trim().equals("") && !currentValue.trim().equals("/n"))
			map.put(currentTag,currentValue);
		currentTag=null;
		currentValue=null;
	}

	@Override
	public void endElement(String uri,String qName)
			throws SAXException {
		if(qName.equals(nodeName))
		{
			list.add(map);
		    map=null;
		}
	}

}



public class pullHandler {
	public static List<Dog> parserXml(InputStream inputStream,String encode) throws XmlPullParserException,IOException{
		List<Dog> list = null;
		Dog dog =null;
		XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
		XmlPullParser parser = factory.newPullParser();
		parser.setInput(inputStream,encode);
		int evenType = parser.getEventType();
		while(evenType!=XmlPullParser.END_DOCUMENT)
		{
		switch (evenType) {
		case XmlPullParser.START_DOCUMENT:
			list = new ArrayList<Dog>();
			break;

		case XmlPullParser.START_TAG:
			if (parser.getName().equals("dog")) {
				dog = new Dog();
				dog.setId(parser.getAttributeValue(0));
			}else if (parser.getName().equals("name")) {
				dog.setName(parser.nextText());
			}else if (parser.getName().equals("color")) {
				dog.setColor(parser.nextText());
			}else if (parser.getName().equals("age")) {
				dog.setAge(Integer.parseInt(parser.nextText()));
			}
			break;
			
		case XmlPullParser.END_TAG:
			 if(parser.getName().equals("dog"))
             {
            	list.add(dog);
            	dog=null;
             }	
			break;

		}
		
		evenType=parser.next();
		
		}
		return list;
	}	

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读