package com.example.plistparsertesting;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import com.longevitysoft.android.xml.plist.PListXMLHandler;
import com.longevitysoft.android.xml.plist.PListXMLParser;
import com.longevitysoft.android.xml.plist.domain.Array;
import com.longevitysoft.android.xml.plist.domain.Dict;
import com.longevitysoft.android.xml.plist.domain.IPListSimpleObject;
import com.longevitysoft.android.xml.plist.domain.PList;
public class MainActivity extends Activity {
/*
* <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>workflow_answers</key>
<array>
<dict>
<key>answer_id</key>
<integer>1</integer>
<key>image_url</key>
<string>http://www.galaxyzoo.org/images/buttons/1_button.gif</string>
<key>next_workflow_task_id</key>
<integer>2</integer>
<key>value</key>
<string>Smooth</string>
<key>workflow_answer_id</key>
<integer>1</integer>
<key>workflow_task_id</key>
<integer>1</integer>
</dict>
<dict>
<key>answer_id</key>
<integer>2</integer>
<key>image_url</key>
<string>http://www.galaxyzoo.org/images/buttons/2_button.gif</string>
<key>next_workflow_task_id</key>
<integer>30</integer>
<key>value</key>
<string>Features or disk</string>
<key>workflow_answer_id</key>
<integer>2</integer>
<key>workflow_task_id</key>
<integer>1</integer>
</dict>
<dict>
<key>answer_id</key>
<integer>3</integer>
<key>image_url</key>
<string>http://www.galaxyzoo.org/images/buttons/3_button.gif</string>
<key>next_workflow_task_id</key>
<integer>0</integer>
<key>value</key>
<string>Star or artifact</string>
<key>workflow_answer_id</key>
<integer>3</integer>
<key>workflow_task_id</key>
<integer>1</integer>
</dict>
<dict>
<key>answer_id</key>
<integer>16</integer>
<key>image_url</key>
<string>http://www.galaxyzoo.org/images/buttons/16_button.gif</string>
<key>next_workflow_task_id</key>
<integer>3</integer>
<key>value</key>
<string>Completely round</string>
<key>workflow_answer_id</key>
<integer>4</integer>
<key>workflow_task_id</key>
<integer>2</integer>
</dict>
<dict>
<key>answer_id</key>
<integer>20</integer>
<key>image_url</key>
<string>http://www.galaxyzoo.org/images/buttons/20_button.gif</string>
<key>next_workflow_task_id</key>
<integer>0</integer>
<key>value</key>
<string>Lens or arc</string>
<key>workflow_answer_id</key>
<integer>10</integer>
<key>workflow_task_id</key>
<integer>4</integer>
</dict>
<dict>
<key>answer_id</key>
<integer>21</integer>
<key>image_url</key>
<string>http://www.galaxyzoo.org/images/buttons/21_button.gif</string>
<key>next_workflow_task_id</key>
<integer>0</integer>
<key>value</key>
<string>Disturbed</string>
<key>workflow_answer_id</key>
<integer>11</integer>
<key>workflow_task_id</key>
<integer>4</integer>
</dict>
</array>
<key>workflow_tasks</key>
<array>
<dict>
<key>name</key>
<string>Is the galaxy simply smooth and rounded, with no sign of a disk?</string>
<key>parent_id</key>
<integer>-1</integer>
<key>task_id</key>
<integer>1</integer>
<key>workflow_answers</key>
<array>
<integer>1</integer>
<integer>2</integer>
<integer>3</integer>
</array>
<key>workflow_task_id</key>
<integer>1</integer>
</dict>
<dict>
<key>name</key>
<string>How rounded is it?</string>
<key>parent_id</key>
<integer>1</integer>
<key>task_id</key>
<integer>7</integer>
<key>workflow_answers</key>
<array>
<integer>4</integer>
<integer>5</integer>
<integer>6</integer>
</array>
<key>workflow_task_id</key>
<integer>2</integer>
</dict>
<dict>
<key>name</key>
<string>Is there anything odd?</string>
<key>parent_id</key>
<integer>2</integer>
<key>task_id</key>
<integer>6</integer>
<key>workflow_answers</key>
<array>
<integer>7</integer>
<integer>8</integer>
</array>
<key>workflow_task_id</key>
<integer>3</integer>
</dict>
</array>
</dict>
</plist>
*
*
*
*/
private final String TAG = "PListPaserTesting";
public static final String VALID_WORKFLOW_PLIST = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n" + "<plist version=\"1.0\">\n" + "<dict>\n" + " <key>workflow_answers</key>\n" + " <array>\n" + " <dict>\n" + " <key>answer_id</key>\n" + " <integer>1</integer>\n" + " <key>image_url</key>\n" + " <string>http://www.galaxyzoo.org/images/buttons/1_button.gif</string>\n" + " <key>next_workflow_task_id</key>\n" + " <integer>2</integer>\n" + " <key>value</key>\n" + " <string>Smooth</string>\n" + " <key>workflow_answer_id</key>\n" + " <integer>1</integer>\n" + " <key>workflow_task_id</key>\n" + " <integer>1</integer>\n" + " </dict>\n" + " <dict>\n" + " <key>answer_id</key>\n" + " <integer>2</integer>\n" + " <key>image_url</key>\n" + " <string>http://www.galaxyzoo.org/images/buttons/2_button.gif</string>\n" + " <key>next_workflow_task_id</key>\n" + " <integer>30</integer>\n" + " <key>value</key>\n" + " <string>Features or disk</string>\n" + " <key>workflow_answer_id</key>\n" + " <integer>2</integer>\n" + " <key>workflow_task_id</key>\n" + " <integer>1</integer>\n" + " </dict>\n" + " <dict>\n" + " <key>answer_id</key>\n" + " <integer>3</integer>\n" + " <key>image_url</key>\n" + " <string>http://www.galaxyzoo.org/images/buttons/3_button.gif</string>\n" + " <key>next_workflow_task_id</key>\n" + " <integer>0</integer>\n" + " <key>value</key>\n" + " <string>Star or artifact</string>\n" + " <key>workflow_answer_id</key>\n" + " <integer>3</integer>\n" + " <key>workflow_task_id</key>\n" + " <integer>1</integer>\n" + " </dict>\n" + " <dict>\n" + " <key>answer_id</key>\n" + " <integer>16</integer>\n" + " <key>image_url</key>\n" + " <string>http://www.galaxyzoo.org/images/buttons/16_button.gif</string>\n" + " <key>next_workflow_task_id</key>\n" + " <integer>3</integer>\n" + " <key>value</key>\n" + " <string>Completely round</string>\n" + " <key>workflow_answer_id</key>\n" + " <integer>4</integer>\n" + " <key>workflow_task_id</key>\n" + " <integer>2</integer>\n" + " </dict>\n" + " <dict>\n" + " <key>answer_id</key>\n" + " <integer>20</integer>\n" + " <key>image_url</key>\n" + " <string>http://www.galaxyzoo.org/images/buttons/20_button.gif</string>\n" + " <key>next_workflow_task_id</key>\n" + " <integer>0</integer>\n" + " <key>value</key>\n" + " <string>Lens or arc</string>\n" + " <key>workflow_answer_id</key>\n" + " <integer>10</integer>\n" + " <key>workflow_task_id</key>\n" + " <integer>4</integer>\n" + " </dict>\n" + " <dict>\n" + " <key>answer_id</key>\n" + " <integer>21</integer>\n" + " <key>image_url</key>\n" + " <string>http://www.galaxyzoo.org/images/buttons/21_button.gif</string>\n" + " <key>next_workflow_task_id</key>\n" + " <integer>0</integer>\n" + " <key>value</key>\n" + " <string>Disturbed</string>\n" + " <key>workflow_answer_id</key>\n" + " <integer>11</integer>\n" + " <key>workflow_task_id</key>\n" + " <integer>4</integer>\n" + " </dict>\n" + " </array>\n" + " <key>workflow_tasks</key>\n" + " <array>\n" + " <dict>\n" + " <key>name</key>\n" + " <string>Is the galaxy simply smooth and rounded, with no sign of a disk?</string>\n" + " <key>parent_id</key>\n" + " <integer>-1</integer>\n" + " <key>task_id</key>\n" + " <integer>1</integer>\n" + " <key>workflow_answers</key>\n" + " <array>\n" + " <integer>1</integer>\n" + " <integer>2</integer>\n" + " <integer>3</integer>\n" + " </array>\n" + " <key>workflow_task_id</key>\n" + " <integer>1</integer>\n" + " </dict>\n" + " <dict>\n" + " <key>name</key>\n" + " <string>How rounded is it?</string>\n" + " <key>parent_id</key>\n" + " <integer>1</integer>\n" + " <key>task_id</key>\n" + " <integer>7</integer>\n" + " <key>workflow_answers</key>\n" + " <array>\n" + " <integer>4</integer>\n" + " <integer>5</integer>\n" + " <integer>6</integer>\n" + " </array>\n" + " <key>workflow_task_id</key>\n" + " <integer>2</integer>\n" + " </dict>\n" + " <dict>\n" + " <key>name</key>\n" + " <string>Is there anything odd?</string>\n" + " <key>parent_id</key>\n" + " <integer>2</integer>\n" + " <key>task_id</key>\n" + " <integer>6</integer>\n" + " <key>workflow_answers</key>\n" + " <array>\n" + " <integer>7</integer>\n" + " <integer>8</integer>\n" + " </array>\n" + " <key>workflow_task_id</key>\n" + " <integer>3</integer>\n" + " </dict>\n" + " </array>\n" + "</dict>\n" + "</plist>\n" + "";
@SuppressWarnings("unchecked")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
PListXMLParser parser = new PListXMLParser();
PListXMLHandler handler = new PListXMLHandler();
parser.setHandler(handler);
parser.parse(VALID_WORKFLOW_PLIST);
PList actualPList = ((PListXMLHandler) parser.getHandler()).getPlist();
Array workflow_answersaArray = ((Dict) actualPList.getRootElement()).getConfigurationArray("workflow_answers");
Log.d(TAG, " workflow_answersaArray.size() : " + workflow_answersaArray.size());
for (int i = 0; i < workflow_answersaArray.size(); i++)
{
int answer_id = ((Dict) workflow_answersaArray.get(i)).getConfigurationInteger("answer_id").getValue();
Log.d(TAG, "answer_id : " + answer_id);
String image_url = ((Dict) workflow_answersaArray.get(i)).getConfiguration("image_url").getValue();
Log.d(TAG, "image_url : " + image_url);
int next_workflow_task_id = ((Dict) workflow_answersaArray.get(i)).getConfigurationInteger("next_workflow_task_id").getValue();
Log.d(TAG, "next_workflow_task_id : " + next_workflow_task_id);
String value = ((Dict) workflow_answersaArray.get(i)).getConfiguration("value").getValue();
Log.d(TAG, "value : " + value);
int workflow_answer_id = ((Dict) workflow_answersaArray.get(i)).getConfigurationInteger("workflow_answer_id").getValue();
Log.d(TAG, "workflow_answer_id : " + workflow_answer_id);
int workflow_task_id = ((Dict) workflow_answersaArray.get(i)).getConfigurationInteger("workflow_task_id").getValue();
Log.d(TAG, "workflow_task_id : " + workflow_task_id);
}
Array workflow_tasksArray = ((Dict) actualPList.getRootElement()).getConfigurationArray("workflow_tasks");
Log.d(TAG, " workflow_tasksArray.size() : " + workflow_tasksArray.size());
for (int i = 0; i < workflow_tasksArray.size(); i++)
{
String name = ((Dict) workflow_tasksArray.get(i)).getConfiguration("name").getValue();
Log.d(TAG, "name : " + name);
int parent_id = ((Dict) workflow_tasksArray.get(i)).getConfigurationInteger("parent_id").getValue();
Log.d(TAG, "parent_id : " + parent_id);
int task_id = ((Dict) workflow_tasksArray.get(i)).getConfigurationInteger("task_id").getValue();
Log.d(TAG, "task_id : " + task_id);
// inArray
Array workflow_answers = ((Dict) workflow_tasksArray.get(i)).getConfigurationArray("workflow_answers");
Log.d(TAG, " workflow_answers.size() : " + workflow_answers.size());
for (int j = 0; j < workflow_answers.size(); j++)
{
int integer = ((IPListSimpleObject<Integer>) workflow_answers.get(j)).getValue();
Log.d(TAG, "integer : " + integer);
}
int workflow_task_id = ((Dict) workflow_tasksArray.get(i)).getConfigurationInteger("workflow_task_id").getValue();
Log.d(TAG, "workflow_task_id : " + workflow_task_id);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}