|
|
@@ -0,0 +1,221 @@
|
|
|
+/*
|
|
|
+ * @author Ranides Atterwim <ranides@gmail.com>
|
|
|
+ * @copyright Ranides Atterwim
|
|
|
+ * @license WTFPL
|
|
|
+ * @url http://ranides.net/projects/assira
|
|
|
+ */
|
|
|
+package net.ranides.assira.xml;
|
|
|
+
|
|
|
+import java.io.Writer;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.function.Consumer;
|
|
|
+import java.util.function.Function;
|
|
|
+import java.util.function.Predicate;
|
|
|
+import java.util.stream.Collector;
|
|
|
+import javax.xml.transform.Transformer;
|
|
|
+import net.ranides.assira.collection.query.CQuery;
|
|
|
+import org.w3c.dom.Element;
|
|
|
+
|
|
|
+/**
|
|
|
+ *
|
|
|
+ * @author Ranides Atterwim <ranides@gmail.com>
|
|
|
+ */
|
|
|
+public interface XMLElement extends Iterable<XMLElement> {
|
|
|
+
|
|
|
+ // @todo (assira #3) XMLQuery
|
|
|
+
|
|
|
+ // https://github.com/chrsan/css-selectors
|
|
|
+ // https://github.com/jOOQ/jOOX
|
|
|
+
|
|
|
+
|
|
|
+ Element node();
|
|
|
+
|
|
|
+ String name();
|
|
|
+
|
|
|
+ CQuery<String> names();
|
|
|
+
|
|
|
+ String xpath();
|
|
|
+
|
|
|
+ CQuery<String> xpaths();
|
|
|
+
|
|
|
+ String content();
|
|
|
+
|
|
|
+ void content(Writer target);
|
|
|
+
|
|
|
+ String text();
|
|
|
+
|
|
|
+ void text(Writer target);
|
|
|
+
|
|
|
+ CQuery<XMLAttribute> attr();
|
|
|
+
|
|
|
+ CQuery<XMLAttribute> attr(String name);
|
|
|
+
|
|
|
+ CQuery<XMLAttribute> attr(Predicate<String> name);
|
|
|
+
|
|
|
+ Map<String,String> namespace();
|
|
|
+
|
|
|
+ XMLElement namespace(boolean on);
|
|
|
+
|
|
|
+ XMLElement namespace(String name, String uri);
|
|
|
+
|
|
|
+ XMLElement namespace(Map<String,String> ns);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ int size();
|
|
|
+
|
|
|
+ CQuery<XMLElement> stream();
|
|
|
+
|
|
|
+ <R> CQuery<R> stream(Function<? super XMLElement, ? extends R> mapper);
|
|
|
+
|
|
|
+ List<XMLElement> list();
|
|
|
+
|
|
|
+ <R> List<R> list(Function<? super XMLElement, ? extends R> mapper);
|
|
|
+
|
|
|
+ <R, A> R collect(Collector<? super XMLElement, A, R> collector);
|
|
|
+
|
|
|
+ void each(Consumer<? super XMLElement> consumer);
|
|
|
+
|
|
|
+
|
|
|
+ XMLElement first();
|
|
|
+
|
|
|
+ XMLElement last();
|
|
|
+
|
|
|
+ XMLElement eq(int... indexes);
|
|
|
+
|
|
|
+ XMLElement slice(int begin);
|
|
|
+
|
|
|
+ XMLElement slice(int begin, int end);
|
|
|
+
|
|
|
+ XMLElement concat(XMLElement elements);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ XMLElement filter(String selector);
|
|
|
+
|
|
|
+ XMLElement filter(XMLSelector selector);
|
|
|
+
|
|
|
+ XMLElement discard(String selector);
|
|
|
+
|
|
|
+ XMLElement discard(XMLSelector selector);
|
|
|
+
|
|
|
+ XMLElement has(String selector);
|
|
|
+
|
|
|
+ XMLElement has(XMLSelector selector);
|
|
|
+
|
|
|
+
|
|
|
+ boolean is(String selector);
|
|
|
+
|
|
|
+ boolean is(XMLSelector selector);
|
|
|
+
|
|
|
+
|
|
|
+ XMLElement find();
|
|
|
+
|
|
|
+ XMLElement find(String selector);
|
|
|
+
|
|
|
+ XMLElement find(XMLSelector selector);
|
|
|
+
|
|
|
+ XMLElement child();
|
|
|
+
|
|
|
+ XMLElement child(String selector);
|
|
|
+
|
|
|
+ XMLElement child(XMLSelector selector);
|
|
|
+
|
|
|
+ XMLElement children();
|
|
|
+
|
|
|
+ XMLElement children(String selector);
|
|
|
+
|
|
|
+ XMLElement children(XMLSelector selector);
|
|
|
+
|
|
|
+ XMLElement next();
|
|
|
+
|
|
|
+ XMLElement next(String selector);
|
|
|
+
|
|
|
+ XMLElement next(XMLSelector selector);
|
|
|
+
|
|
|
+ XMLElement nextAll();
|
|
|
+
|
|
|
+ XMLElement nextAll(String selector);
|
|
|
+
|
|
|
+ XMLElement nextAll(XMLSelector selector);
|
|
|
+
|
|
|
+ XMLElement nextUntil(String selector);
|
|
|
+
|
|
|
+ XMLElement nextUntil(XMLSelector selector);
|
|
|
+
|
|
|
+ XMLElement prev();
|
|
|
+
|
|
|
+ XMLElement prev(String selector);
|
|
|
+
|
|
|
+ XMLElement prev(XMLSelector selector);
|
|
|
+
|
|
|
+ XMLElement prevAll();
|
|
|
+
|
|
|
+ XMLElement prevAll(String selector);
|
|
|
+
|
|
|
+ XMLElement prevAll(XMLSelector selector);
|
|
|
+
|
|
|
+ XMLElement prevUntil(String selector);
|
|
|
+
|
|
|
+ XMLElement prevUntil(XMLSelector selector);
|
|
|
+
|
|
|
+ XMLElement parent();
|
|
|
+
|
|
|
+ XMLElement parent(String selector);
|
|
|
+
|
|
|
+ XMLElement parent(XMLSelector selector);
|
|
|
+
|
|
|
+ XMLElement parents();
|
|
|
+
|
|
|
+ XMLElement parents(String selector);
|
|
|
+
|
|
|
+ XMLElement parents(XMLSelector selector);
|
|
|
+
|
|
|
+ XMLElement parentsUntil(String until);
|
|
|
+
|
|
|
+ XMLElement parentsUntil(XMLSelector until);
|
|
|
+
|
|
|
+ XMLElement parentsUntil(String until, String selector);
|
|
|
+
|
|
|
+ XMLElement parentsUntil(XMLSelector until, XMLSelector selector);
|
|
|
+
|
|
|
+ XMLElement siblings();
|
|
|
+
|
|
|
+ XMLElement siblings(String selector);
|
|
|
+
|
|
|
+ XMLElement siblings(XMLSelector selector);
|
|
|
+
|
|
|
+ XMLElement leaf();
|
|
|
+
|
|
|
+
|
|
|
+ XMLElement before(XMLElement element);
|
|
|
+
|
|
|
+ XMLElement after(XMLElement element);
|
|
|
+
|
|
|
+ XMLElement prepend(XMLElement element);
|
|
|
+
|
|
|
+ XMLElement append(XMLElement element);
|
|
|
+
|
|
|
+ XMLElement replace(XMLElement element);
|
|
|
+
|
|
|
+ XMLElement rename(String tagname);
|
|
|
+
|
|
|
+ XMLElement remove();
|
|
|
+
|
|
|
+ XMLElement clear();
|
|
|
+
|
|
|
+ XMLElement wrap(String tagname);
|
|
|
+
|
|
|
+ XMLElement unwrap(String tagname);
|
|
|
+
|
|
|
+ XMLElement attr(String name, String value);
|
|
|
+
|
|
|
+ XMLElement content(String value);
|
|
|
+
|
|
|
+ XMLElement text(String value);
|
|
|
+
|
|
|
+ XMLElement apply(Transformer transformer);
|
|
|
+
|
|
|
+
|
|
|
+}
|