package com.xhsemoticonskeyboard.common.utils; import android.content.Context; import android.util.Xml; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import sj.keyboard.data.EmoticonEntity; import sj.keyboard.data.EmoticonPageEntity; import sj.keyboard.data.EmoticonPageSetEntity; public class XmlUtil { Context mContext; public XmlUtil(Context context) { this.mContext = context; } public InputStream getXmlFromAssets(String xmlName) { try { InputStream inStream = this.mContext.getResources().getAssets().open(xmlName); return inStream; } catch (IOException e) { e.printStackTrace(); } return null; } public InputStream getXmlFromSD(String filePath) { try { File file = new File(filePath); if (file.exists()) { FileInputStream inStream = new FileInputStream(file); return inStream; } } catch (IOException e) { e.printStackTrace(); } return null; } public EmoticonPageSetEntity<EmoticonEntity> ParserXml(String filePath, InputStream inStream) { String arrayParentKey = "EmoticonBean"; boolean isChildCheck = false; EmoticonPageSetEntity.Builder<EmoticonEntity> emoticonPageSetEntity = new EmoticonPageSetEntity.Builder<>(); ArrayList<EmoticonEntity> emoticonList = new ArrayList<>(); emoticonPageSetEntity.setEmoticonList(emoticonList); EmoticonEntity emoticonBeanTemp = null; if (null != inStream) { XmlPullParser pullParser = Xml.newPullParser(); try { pullParser.setInput(inStream, "UTF-8"); int event = pullParser.getEventType(); while (event != XmlPullParser.END_DOCUMENT) { switch (event) { case XmlPullParser.START_DOCUMENT: break; case XmlPullParser.START_TAG: String skeyName = pullParser.getName(); /** * EmoticonBeans data */ if (isChildCheck && emoticonBeanTemp != null) { if (skeyName.equals("eventType")) { try { String value = pullParser.nextText(); emoticonBeanTemp.setEventType(Integer.parseInt(value)); } catch (NumberFormatException e) { } } else if (skeyName.equals("iconUri")) { String value = pullParser.nextText(); emoticonBeanTemp.setIconUri("file://" + filePath + "/" + value); } else if (skeyName.equals("content")) { String value = pullParser.nextText(); emoticonBeanTemp.setContent(value); } } /** * EmoticonSet data */ else { try { if (skeyName.equals("name")) { String value = pullParser.nextText(); emoticonPageSetEntity.setSetName(value); } else if (skeyName.equals("line")) { String value = pullParser.nextText(); emoticonPageSetEntity.setLine(Integer.parseInt(value)); } else if (skeyName.equals("row")) { String value = pullParser.nextText(); emoticonPageSetEntity.setRow(Integer.parseInt(value)); } else if (skeyName.equals("iconUri")) { String value = pullParser.nextText(); emoticonPageSetEntity.setIconUri(value); } else if (skeyName.equals("isShowDelBtn")) { String value = pullParser.nextText(); EmoticonPageEntity.DelBtnStatus delBtnStatus; if (Integer.parseInt(value) == 1) { delBtnStatus = EmoticonPageEntity.DelBtnStatus.FOLLOW; } else if (Integer.parseInt(value) == 2) { delBtnStatus = EmoticonPageEntity.DelBtnStatus.LAST; } else { delBtnStatus = EmoticonPageEntity.DelBtnStatus.GONE; } emoticonPageSetEntity.setShowDelBtn(delBtnStatus); } } catch (NumberFormatException e) { e.printStackTrace(); } } if (skeyName.equals(arrayParentKey)) { isChildCheck = true; emoticonBeanTemp = new EmoticonEntity(); } break; case XmlPullParser.END_TAG: String ekeyName = pullParser.getName(); if (isChildCheck && ekeyName.equals(arrayParentKey)) { isChildCheck = false; emoticonList.add(emoticonBeanTemp); } break; default: break; } event = pullParser.next(); } return new EmoticonPageSetEntity(emoticonPageSetEntity); } catch (XmlPullParserException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } return new EmoticonPageSetEntity(emoticonPageSetEntity); } }