现在的位置: 首页 > 综合 > 正文

XML文件解析

2018年01月31日 ⁄ 综合 ⁄ 共 2102字 ⁄ 字号 评论关闭

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 localName, 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;
	}	

}

抱歉!评论已关闭.