Search in sources :

Example 1 with ElementSelector

use of com.codename1.rad.io.ElementSelector in project CodeRAD by shannah.

the class ElementSelector method resultsImpl.

private Set<Element> resultsImpl() {
    if (results == null) {
        results = new LinkedHashSet<Element>();
        if (aggregateSelectors != null) {
            for (ElementSelector sel : aggregateSelectors) {
                results.addAll(sel.resultsImpl());
            }
            return results;
        }
        if (parent != null) {
            roots.clear();
            roots.addAll(parent.resultsImpl());
        }
        for (Element root : roots) {
            if (childrenOnly) {
                if (!root.isTextElement() && !root.isEmpty()) {
                    for (Element child : root) {
                        if (match(child)) {
                            results.add(child);
                        }
                    }
                }
            } else {
                if (!root.isTextElement() && !root.isEmpty()) {
                    for (Element child : root) {
                        resultsImpl(results, child);
                    }
                }
            }
        }
    }
    return results;
}
Also used : Element(com.codename1.xml.Element)

Example 2 with ElementSelector

use of com.codename1.rad.io.ElementSelector in project CodeRAD by shannah.

the class ElementSelectorTest method runTest.

@Override
public boolean runTest() throws Exception {
    String json = "<person name=\"Paul\" email=\"paul@example.com\" dob=\"December 27, 1978\">" + "<children><person name=\"Jim\" email=\"jim@example.com\" dob=\"January 10, 1979\"/>" + "<person name=\"Jill\" email=\"jill@example.com\" dob=\"January 11, 1979\"/></children></person>";
    XMLParser xparser = new XMLParser();
    Element root = xparser.parse(new StringReader("<?xml version='1.0'?>\n" + json));
    ElementSelector found = new ElementSelector("person", root);
    assertEqual(2, found.size(), "There should be 2 person elements");
    assertEqual(1, new ElementSelector("person[name=Jill]", root).size(), "Wrong count on search for Jill");
    assertEqual(1, new ElementSelector("person[name=Jim]", root).size(), "Wrong count on search for Jim");
    assertEqual(0, new ElementSelector("person[name=John]", root).size(), "Wrong count on search for John");
    assertEqual(1, new ElementSelector("person[name='Jill']", root).size(), "Wrong count on search for 'Jill'");
    assertEqual(1, new ElementSelector("person[name=\"Jill\"]", root).size(), "Wrong count on search for \"Jill\"");
    assertEqual(1, new ElementSelector("person[name!=\"Jill\"]", root).size(), "Wrong count on search for != \"Jill\"");
    assertEqual("Jim", new ElementSelector("person[name!=Jill]", root).getAttribute("name"), "Wrong name for query name!=Jill");
    assertEqual("Paul", new ElementSelector(root).getAttribute("name"), "Wrong name for root wrapped");
    assertEqual(1, new ElementSelector("person[name=Jill OR name=John]", root).size(), "Wrong count on search for Jill or John");
    assertEqual(2, new ElementSelector("person[name=Jill OR name=Jim]", root).size(), "Wrong count on search for Jill or John");
    assertEqual(2, new ElementSelector("person[name=Jill], person[name=Jim]", root).size(), "Wrong count compound search for Jill and John");
    assertEqual(0, new ElementSelector("person[name=Jill AND name=Jim]", root).size(), "Wrong count on search for Jill and John");
    assertEqual("Jill", new ElementSelector(root).getString("children/person[name=Jill]/@name", null), "getString() returned wrong value");
    assertEqual("Jill", new ElementSelector(root).getString(">children/person[name=Jill]/@name", null), "getString() returned wrong value which child selector");
    assertEqual("Jill", new ElementSelector(root).getString(">*/person[name=Jill]/@name", null), "getString() returned wrong value with > * selector");
    assertEqual("Jill", new ElementSelector(root).getString("*[name=Jill]/@name", null), "getString() returned wrong value with * selector");
    assertEqual("Jim", new ElementSelector(root).getString("*[name=Jim]/@name", null), "getString() returned wrong value with * selector");
    assertEqual("Jim", new ElementSelector(root).getString("person/@name", null), "Should return Jim because it is the first person.");
    assertEqual(1, new ElementSelector("person", root).getParent().size(), "All people have same parent, so size of getParent() should be 1");
    assertEqual("Paul", new ElementSelector("person", root).getParent().getParent().getString("@name", null), "Double parent should have name paul");
    return true;
}
Also used : Element(com.codename1.xml.Element) StringReader(java.io.StringReader) XMLParser(com.codename1.xml.XMLParser) ElementSelector(com.codename1.rad.io.ElementSelector)

Aggregations

Element (com.codename1.xml.Element)2 ElementSelector (com.codename1.rad.io.ElementSelector)1 XMLParser (com.codename1.xml.XMLParser)1 StringReader (java.io.StringReader)1