/** * Removes all children elements that have a given name, recursively. * * @param name The name of elements to remove. * @param recurse If {@code true}, then this is applied recursively. */ public default void removeElementsNamed(String name, boolean recurse) { removeChildren(Element.named(name), true, recurse); }
/** * Creates a Predicate that accepts Nodes that are element whose named belongs to an array. * * @param names The names. * @return A new Predicate that accepts Nodes that are elements whose name belongs to {@code names}. */ public static Predicate<Node> named(String... names) { return named(CollectionsUtil.toSet(names)); }
/** * Returns an Iterable of children elements that have a given name. * * @param name The name. * @return An Iterable containing elements named {@code name}. */ public default Iterable<Element> getElementsNamed(String name) { return getChildren(Element.class, Element.named(name)); }
/** * Removes all children elements that have a given name. * * @param name The name of elements to remove. */ public default void removeElementsNamed(String name) { removeChildren(Element.named(name)); }
assertEquals(child2, root.getChildAt(1)); assertEquals(child3, root.getChildAt(2)); assertEquals(1, root.getChildrenCount(Element.class, Element.named(NAME1))); assertEquals(1, root.getChildrenCount(Element.class, Element.named(NAME2))); assertEquals(1, root.getChildrenCount(Element.class, Element.named(NAME3))); assertEquals(0, root.getChildrenCount(Element.class, Element.named(NAME1))); assertEquals(1, root.getChildrenCount(Element.class, Element.named(NAME2))); assertEquals(1, root.getChildrenCount(Element.class, Element.named(NAME3))); assertEquals(0, root.getChildrenCount(Element.class, Element.named(NAME1))); assertEquals(0, root.getChildrenCount(Element.class, Element.named(NAME2))); assertEquals(1, root.getChildrenCount(Element.class, Element.named(NAME3))); root.removeChildAt(0); assertEquals(child2, root.getChildAt(1)); assertEquals(child3, root.getChildAt(2)); assertEquals(1, root.getChildrenCount(Element.class, Element.named(NAME1))); assertEquals(1, root.getChildrenCount(Element.class, Element.named(NAME2))); assertEquals(1, root.getChildrenCount(Element.class, Element.named(NAME3)));
@Test public void testRemoveChildren() { final Element root = new Element(NAME); root.addElement(NAME1); root.addElement(NAME1); root.addElement(NAME2); root.addElement(NAME1); root.addElement(NAME1); assertEquals(5, root.getChildrenCount(Element.class)); assertEquals(4, root.getChildrenCount(Element.class, Element.named(NAME1))); root.removeChildAt(0); assertEquals(4, root.getChildrenCount(Element.class)); assertEquals(3, root.getChildrenCount(Element.class, Element.named(NAME1))); root.removeElementsNamed(NAME1); assertEquals(1, root.getChildrenCount(Element.class)); assertEquals(0, root.getChildrenCount(Element.class, Element.named(NAME1))); } }
final Element child4 = root.addElement(NAME4); final Element child5 = root.addElement(NAME1); assertEquals(3, root.getChildrenCount(Element.class, Element.named(NAME1))); assertEquals(0, root.getChildrenCount(Element.class, Element.named(NAME2))); assertEquals(5, root.getChildrenCount(Element.class)); assertEquals(child1, root.getChildAt(0)); assertEquals(2, root.getChildrenCount(Element.class, Element.named(NAME1))); assertEquals(0, root.getChildrenCount(Element.class, Element.named(NAME2))); assertEquals(4, root.getChildrenCount(Element.class)); assertEquals(child2, root.getChildAt(0)); assertEquals(1, root.getChildrenCount(Element.class, Element.named(NAME1))); assertEquals(0, root.getChildrenCount(Element.class, Element.named(NAME2))); assertEquals(3, root.getChildrenCount(Element.class)); assertEquals(child2, root.getChildAt(0));
@Test public void testGetChildren() { final Element root = new Element(NAME); assertEquals(null, root.getLastChild()); final Element child1 = root.addElement(NAME1); final Element child2 = root.addElement(NAME2); final Element child3 = root.addElement(NAME1); child3.addAttribute(NAME, VALUE); final Comment child4 = root.addComment("Hello"); assertEquals(4, root.getChildrenCount()); assertTrue(root.hasChildren(Element.class)); assertTrue(root.hasChildren(Comment.class)); assertFalse(root.hasChildren(Text.class)); assertEquals(child4, root.getLastChild()); assertEquals(child1, root.getChild(Element.class)); assertEquals(child1, root.getElementNamed(NAME1)); assertEquals(3, root.getChildrenCount(Element.class)); assertEquals(2, root.getChildrenCount(Element.class, Element.named(NAME1))); assertEquals(child2, root.getChild(Element.class, Element.named(NAME2))); assertEquals(child2, root.getChildAt(Element.class, Element.named(NAME2), 0)); assertEquals(null, root.getChildAt(Element.class, Element.named(NAME2), 1)); assertEquals(child3, root.getChildAt(2)); assertEquals(child3, root.getChildAt(Element.class, 2)); assertEquals(child4, root.getChildAt(Comment.class, 0)); assertEquals(3, Iterables.size(root.getElements())); assertEquals(1, Iterables.size(root.getComments())); assertEquals(0, Iterables.size(root.getTexts())); assertEquals(child3, root.getElementNamedWithAttribute(NAME1, NAME, VALUE)); }