Search in sources :

Example 56 with XmlPullParserFactory

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;
}
Also used : XmlPullParserFactory(org.xmlpull.v1.XmlPullParserFactory) XmlPullParser(org.xmlpull.v1.XmlPullParser) XmlPullParserException(org.xmlpull.v1.XmlPullParserException)

Example 57 with XmlPullParserFactory

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;
}
Also used : XmlPullParserFactory(org.xmlpull.v1.XmlPullParserFactory) XmlPullParser(org.xmlpull.v1.XmlPullParser) StringReader(java.io.StringReader) XmlPullParserException(org.xmlpull.v1.XmlPullParserException)

Example 58 with XmlPullParserFactory

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;
    }
}
Also used : XmlPullParserFactory(org.xmlpull.v1.XmlPullParserFactory) XmlPullParser(org.xmlpull.v1.XmlPullParser) XmlPullParserException(org.xmlpull.v1.XmlPullParserException) IOException(java.io.IOException) Nullable(android.support.annotation.Nullable)

Example 59 with XmlPullParserFactory

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;
}
Also used : Category(org.liberty.android.fantastischmemo.entity.Category) InputStreamReader(java.io.InputStreamReader) XmlPullParser(org.xmlpull.v1.XmlPullParser) ArrayList(java.util.ArrayList) FileInputStream(java.io.FileInputStream) Date(java.util.Date) Card(org.liberty.android.fantastischmemo.entity.Card) LinkedHashMap(java.util.LinkedHashMap) XmlPullParserFactory(org.xmlpull.v1.XmlPullParserFactory) BufferedReader(java.io.BufferedReader) LearningData(org.liberty.android.fantastischmemo.entity.LearningData)

Example 60 with XmlPullParserFactory

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;
}
Also used : InputStreamReader(java.io.InputStreamReader) XmlPullParser(org.xmlpull.v1.XmlPullParser) ArrayList(java.util.ArrayList) URL(java.net.URL) XmlPullParserFactory(org.xmlpull.v1.XmlPullParserFactory) BufferedReader(java.io.BufferedReader) HttpsURLConnection(javax.net.ssl.HttpsURLConnection)

Aggregations

XmlPullParserFactory (org.xmlpull.v1.XmlPullParserFactory)71 XmlPullParser (org.xmlpull.v1.XmlPullParser)56 XmlPullParserException (org.xmlpull.v1.XmlPullParserException)30 IOException (java.io.IOException)24 InputStream (java.io.InputStream)16 InputStreamReader (java.io.InputStreamReader)10 StringReader (java.io.StringReader)10 FileInputStream (java.io.FileInputStream)8 XmlSerializer (org.xmlpull.v1.XmlSerializer)7 ArrayList (java.util.ArrayList)6 HashMap (java.util.HashMap)6 File (java.io.File)5 XmlResourceParser (android.content.res.XmlResourceParser)4 IOException2 (hudson.util.IOException2)4 BufferedReader (java.io.BufferedReader)4 Reader (java.io.Reader)4 Map (java.util.Map)3 ByteArrayInputStream (java.io.ByteArrayInputStream)2 FileNotFoundException (java.io.FileNotFoundException)2 StringWriter (java.io.StringWriter)2