use of org.xmlpull.v1.XmlPullParserFactory in project robotcode by OutoftheBoxFTC.
the class ReadXMLFileHandler method xmlPullParserFromReader.
public static XmlPullParser xmlPullParserFromReader(Reader reader) {
XmlPullParserFactory factory;
XmlPullParser parser = null;
try {
factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
parser = factory.newPullParser();
parser.setInput(reader);
} catch (XmlPullParserException e) {
e.printStackTrace();
}
return parser;
}
use of org.xmlpull.v1.XmlPullParserFactory in project robotcode by OutoftheBoxFTC.
the class RobotConfigFile method getXmlNone.
// In the 'none' case we simply return an XmlPullParser on a degenerate, empty, configuration
protected XmlPullParser getXmlNone() {
XmlPullParser result = null;
try {
String emptyXml = "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>\n" + "<Robot type=\"FirstInspires-FTC\">\n" + "</Robot>\n";
StringReader stringReader = new StringReader(emptyXml);
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
result = factory.newPullParser();
result.setInput(stringReader);
} catch (XmlPullParserException e) {
RobotLog.logStacktrace(e);
}
return result;
}
use of org.xmlpull.v1.XmlPullParserFactory in project WechatEnhancement by firesunCN.
the class XmlToJson method convertToJSONObject.
@Nullable
private JSONObject convertToJSONObject() {
try {
Tag parentTag = new Tag("", "xml");
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
// tags with namespace are taken as-is ("namespace:tagname")
factory.setNamespaceAware(false);
XmlPullParser xpp = factory.newPullParser();
setInput(xpp);
int eventType = xpp.getEventType();
while (eventType != XmlPullParser.START_DOCUMENT) {
eventType = xpp.next();
}
readTags(parentTag, xpp);
unsetInput();
return convertTagToJson(parentTag, false);
} catch (XmlPullParserException | IOException e) {
e.printStackTrace();
return null;
}
}
use of org.xmlpull.v1.XmlPullParserFactory in project AnyMemo by helloworld1.
the class Mnemosyne2CardsImporter method xmlToCards.
/*
Sample format to parse:
<openSM2sync number_of_entries="10"><log type="10" o_id="epbt47DXNulRU8DsEtwtRp"><name>Category1</name></log>
<log type="10" o_id="5SfWDFGwqrlnGLDQxHHyG0"><name>Category2</name></log>
<log type="16" o_id="4pblLFgzF7vONXhjIQv5Rm"><b>Answer1</b><f>Qustion1</f></log>
<log type="16" o_id="QiQz84nC2tvMF5OKdPepaf"><b>Answer2</b><f>Question2</f></log>
<log type="16" o_id="hfoNwlcf0quuxpcWntyCZl"><b>Answer3</b><f>Question3</f></log>
<log type="16" o_id="7xmRCBH0WP0DZaxeFn5NLw"><b>Answer4</b><f>Question4</f></log>
<log card_t="1" fact_v="1.1" e="2.5" gr="-1" tags="epbt47DXNulRU8DsEtwtRp" rt_rp_l="0" lps="0" l_rp="-1" n_rp="-1" ac_rp_l="0" rt_rp="0" ac_rp="0" type="6" o_id="MDcIMVQJUGEjqR6DJoAqVm" fact="4pblLFgzF7vONXhjIQv5Rm"></log>
<log card_t="1" fact_v="1.1" e="2.5" gr="-1" tags="epbt47DXNulRU8DsEtwtRp" rt_rp_l="0" lps="0" l_rp="-1" n_rp="-1" ac_rp_l="0" rt_rp="0" ac_rp="0" type="6" o_id="iVwbE7q2QLPY4SJRS1AtqK" fact="QiQz84nC2tvMF5OKdPepaf"></log>
<log card_t="1" fact_v="1.1" e="2.5" gr="-1" tags="5SfWDFGwqrlnGLDQxHHyG0" rt_rp_l="0" lps="0" l_rp="-1" n_rp="-1" ac_rp_l="0" rt_rp="0" ac_rp="0" type="6" o_id="hW3JxWbfBOWoKDVQZ3jVQ1" fact="hfoNwlcf0quuxpcWntyCZl"></log>
<log card_t="1" fact_v="1.1" e="2.5" gr="-1" tags="5SfWDFGwqrlnGLDQxHHyG0" rt_rp_l="0" lps="0" l_rp="-1" n_rp="-1" ac_rp_l="0" rt_rp="0" ac_rp="0" type="6" o_id="7IXjCysHuCDtXo8hlFrK55" fact="7xmRCBH0WP0DZaxeFn5NLw"></log>
</openSM2sync>
*/
private List<Card> xmlToCards(File xmlFile) throws IOException, XmlPullParserException {
FileInputStream inputStream = new FileInputStream(xmlFile);
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(false);
XmlPullParser xpp = factory.newPullParser();
xpp.setInput(new BufferedReader(new InputStreamReader(inputStream)));
List<Card> cardList = null;
// Map between xml oid to card
Map<String, Card> cardOidMap = null;
// Map between xml oid to category
Map<String, Category> categoryOidMAP = null;
int lastType = 0;
int currentOrd = 1;
String lastOid = "";
ValueType lastValueType = null;
int eventType = xpp.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
if (eventType == XmlPullParser.START_DOCUMENT) {
// Nothing
} else if (eventType == XmlPullParser.START_TAG) {
// <openSM2sync number_of_entries="10">
if (xpp.getName().equals("openSM2sync")) {
int cardCount = Integer.parseInt(xpp.getAttributeValue(null, "number_of_entries"));
cardList = new ArrayList<Card>(cardCount);
// The hash map is 0.75 full for performance and space.
// Use LinkedHashMap to maintain insertion order.
cardOidMap = new LinkedHashMap<String, Card>(cardCount * 4 / 3);
categoryOidMAP = new LinkedHashMap<String, Category>();
}
if (xpp.getName().equals("log")) {
lastType = Integer.parseInt(xpp.getAttributeValue(null, "type"));
lastOid = xpp.getAttributeValue(null, "o_id");
}
// <log type="10" o_id="5SfWDFGwqrlnGLDQxHHyG0"><name>Category2</name></log>
if (lastType == TAG_FIELD_TYPE && xpp.getName().equals("name")) {
lastValueType = ValueType.CARD_TAG;
}
// <log type="16" o_id="7xmRCBH0WP0DZaxeFn5NLw"><b>Answer4</b><f>Question4</f></log>
if (lastType == QA_FIELD_TYPE && xpp.getName().equals("f")) {
lastValueType = ValueType.CARD_FRONT;
}
if (lastType == QA_FIELD_TYPE && xpp.getName().equals("b")) {
lastValueType = ValueType.CARD_BACK;
}
// <log card_t="1" fact_v="1.1" e="2.5" gr="-1" tags="epbt47DXNulRU8DsEtwtRp" rt_rp_l="0" lps="0" l_rp="-1" n_rp="-1" ac_rp_l="0" rt_rp="0" ac_rp="0" type="6" o_id="MDcIMVQJUGEjqR6DJoAqVm" fact= "4pblLFgzF7vONXhjIQv5Rm"></log>
if (lastType == LEARNING_DATA_FIELD_TYPE) {
String tagOid = xpp.getAttributeValue(null, "tags");
String factOid = xpp.getAttributeValue(null, "fact");
LearningData ld = new LearningData();
ld.setEasiness(Float.parseFloat(xpp.getAttributeValue(null, "e")));
ld.setGrade(Integer.parseInt(xpp.getAttributeValue(null, "gr")));
ld.setRetReps(Integer.parseInt(xpp.getAttributeValue(null, "rt_rp_l")));
ld.setLapses(Integer.parseInt(xpp.getAttributeValue(null, "lps")));
ld.setLapses(Integer.parseInt(xpp.getAttributeValue(null, "lps")));
long nrp = Integer.parseInt(xpp.getAttributeValue(null, "n_rp"));
long lrp = Integer.parseInt(xpp.getAttributeValue(null, "l_rp"));
if (lrp != -1 && nrp != -1) {
ld.setLastLearnDate(new Date(lrp * 1000L));
ld.setNextLearnDate(new Date(nrp * 1000L));
}
ld.setAcqRepsSinceLapse(Integer.parseInt(xpp.getAttributeValue(null, "ac_rp_l")));
ld.setRetReps(Integer.parseInt(xpp.getAttributeValue(null, "rt_rp")));
ld.setAcqReps(Integer.parseInt(xpp.getAttributeValue(null, "ac_rp")));
// Now find the card that need this learning data
Card card = cardOidMap.get(factOid);
// The learning data is using the same id as card
ld.setId(card.getId());
// and also find out the corresponding tag for card's category
Category category = categoryOidMAP.get(tagOid);
if (tagOid.contains(",")) {
// If the card has multiple category, select only the first category.
String firstOid = tagOid.split(",")[0];
category = categoryOidMAP.get(firstOid);
} else {
category = categoryOidMAP.get(tagOid);
}
if (category == null) {
category = new Category();
}
card.setLearningData(ld);
card.setCategory(category);
}
} else if (eventType == XmlPullParser.TEXT) {
if (lastValueType == ValueType.CARD_TAG) {
Category category = new Category();
category.setName(xpp.getText());
categoryOidMAP.put(lastOid, category);
} else if (lastValueType == ValueType.CARD_FRONT) {
Card card = cardOidMap.get(lastOid);
if (card == null) {
card = new Card();
card.setId(currentOrd);
card.setOrdinal(currentOrd);
cardOidMap.put(lastOid, card);
cardList.add(card);
currentOrd++;
}
card.setQuestion(xpp.getText());
} else if (lastValueType == ValueType.CARD_BACK) {
Card card = cardOidMap.get(lastOid);
if (card == null) {
card = new Card();
card.setId(currentOrd);
card.setOrdinal(currentOrd);
cardOidMap.put(lastOid, card);
cardList.add(card);
currentOrd++;
}
card.setAnswer(xpp.getText());
}
} else if (eventType == XmlPullParser.END_TAG) {
if (xpp.getName().equals("log")) {
lastType = 0;
lastOid = "";
lastValueType = null;
}
}
eventType = xpp.next();
}
return cardList;
}
use of org.xmlpull.v1.XmlPullParserFactory in project AnyMemo by helloworld1.
the class CellsFactory method getCells.
public static Cells getCells(Spreadsheet spreadsheet, Worksheet worksheet, String authToken) throws XmlPullParserException, IOException {
URL url = new URL("https://spreadsheets.google.com/feeds/cells/" + spreadsheet.getId() + "/" + worksheet.getId() + "/private/full?access_token=" + authToken);
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
if (conn.getResponseCode() / 100 >= 3) {
String s = new String(IOUtils.toByteArray(conn.getErrorStream()));
throw new RuntimeException(s);
}
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser xpp = factory.newPullParser();
xpp.setInput(new BufferedReader(new InputStreamReader(conn.getInputStream())));
int eventType = xpp.getEventType();
List<Row> rowList = new ArrayList<Row>(100);
Row row = null;
String lastTag = "";
int currentRow = 1;
int currentCol = 1;
Cells cells = new Cells();
while (eventType != XmlPullParser.END_DOCUMENT) {
if (eventType == XmlPullParser.START_DOCUMENT) {
} else if (eventType == XmlPullParser.START_TAG) {
lastTag = xpp.getName();
if (xpp.getName().equals("cell")) {
currentRow = Integer.valueOf(xpp.getAttributeValue(null, "row"));
currentCol = Integer.valueOf(xpp.getAttributeValue(null, "col"));
}
} else if (eventType == XmlPullParser.END_TAG) {
if (xpp.getName().equals("entry")) {
rowList.add(row);
row = null;
}
} else if (eventType == XmlPullParser.TEXT) {
if (lastTag.equals("cell")) {
cells.addCell(currentRow, currentCol, xpp.getText());
}
if (lastTag.equals("title") && Strings.isNullOrEmpty(cells.getWorksheetName())) {
cells.setWorksheetName(xpp.getText());
}
}
eventType = xpp.next();
}
return cells;
}
Aggregations