SoapConfigDataParser.java 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. package epson.epsonconnectregistration;
  2. import android.util.Xml;
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.util.HashMap;
  6. import org.xmlpull.v1.XmlPullParser;
  7. import org.xmlpull.v1.XmlPullParserException;
  8. import org.xmlpull.v1.XmlPullParserFactory;
  9. public abstract class SoapConfigDataParser {
  10. private static final String ELEMENT_D = "d";
  11. private static final String ELEMENT_DATA = "Data";
  12. private static final String ELEMENT_GROUP = "Group";
  13. private static final String ELEMENT_ID = "id";
  14. private static final String ELEMENT_RETURN = "return";
  15. private static final String NAMESPACE = "ijcp";
  16. private static final String SCHEMA = "http://schemas.epson.net/ws/2008/07/config-data";
  17. private static final String TAG = "SoapConfigDataParser";
  18. private String groupId;
  19. private boolean ret = false;
  20. private HashMap<String, String> valueMap;
  21. public SoapConfigDataParser(String str) {
  22. groupId = str;
  23. valueMap = new HashMap<>();
  24. }
  25. public String getGroupId() {
  26. return groupId;
  27. }
  28. public void parseXml(InputStream inputStream) throws XmlPullParserException, IOException {
  29. XmlPullParserFactory newInstance = XmlPullParserFactory.newInstance();
  30. newInstance.setNamespaceAware(true);
  31. XmlPullParser newPullParser = newInstance.newPullParser();
  32. inputStream.reset();
  33. ret = false;
  34. valueMap.clear();
  35. newPullParser.setInput(inputStream, Xml.Encoding.UTF_8.name());
  36. String str = null;
  37. boolean z = false;
  38. for (int eventType = newPullParser.getEventType(); eventType != 1; eventType = newPullParser.next()) {
  39. if (eventType == 0) {
  40. EPLog.d(TAG, "Start document");
  41. } else if (eventType == 2) {
  42. String name = newPullParser.getName();
  43. EPLog.d(TAG, "Start tag " + newPullParser.getName() + " prefix = " + newPullParser.getNamespacePrefix(newPullParser.getDepth()));
  44. if (!ELEMENT_DATA.equals(name)) {
  45. if (ELEMENT_GROUP.equals(name)) {
  46. String attributeValue = newPullParser.getAttributeValue((String) null, "id");
  47. if (attributeValue.equals("ijcp:" + groupId)) {
  48. ret = "true".equalsIgnoreCase(newPullParser.getAttributeValue((String) null, ELEMENT_RETURN));
  49. z = true;
  50. } else {
  51. EPLog.d(TAG, "Unexpected group" + attributeValue);
  52. }
  53. } else if (ELEMENT_D.equals(name)) {
  54. str = newPullParser.getAttributeValue((String) null, "id");
  55. } else {
  56. EPLog.m83w(TAG, "Unknown tag " + newPullParser.getName());
  57. }
  58. }
  59. } else if (eventType == 3) {
  60. String name2 = newPullParser.getName();
  61. EPLog.d(TAG, "End tag " + name2);
  62. if (ELEMENT_GROUP.equals(name2)) {
  63. z = false;
  64. }
  65. str = null;
  66. } else if (eventType == 4) {
  67. String text = newPullParser.getText();
  68. if (!(!z || str == null || text == null)) {
  69. valueMap.put(str, text);
  70. EPLog.d(TAG, "Data = " + str + " : " + text);
  71. }
  72. }
  73. }
  74. EPLog.d(TAG, "End document");
  75. }
  76. public String getValue(String str) {
  77. HashMap<String, String> hashMap = valueMap;
  78. return hashMap.get("ijcp:" + str);
  79. }
  80. public boolean getRetVal() {
  81. return ret;
  82. }
  83. }