/** * Removes all children that match a predicate, recursively. * * @param predicate The predicate. * @param pre If {@code true}, removal is applied before recursion, after otherwise. * @param recurse If {@code true}, then this is applied recursively. */ public default void removeChildren(Predicate<? super Child> predicate, boolean pre, boolean recurse) { if (pre) { removeChildren(predicate); } if (recurse) { for (final Element child : getElements()) { child.removeChildren(predicate, pre, true); } } if (!pre) { removeChildren(predicate); } }
text.appendContent(newContent); } else { child.removeChildren(); if (newContent != null && !newContent.isEmpty()) { child.addText(modifier.apply(content));
assertEquals(null, e.getText()); e.removeChildren(); e.addText("Hello", false); e.addComment("Comment"); assertEquals("HelloWorld", e.getText()); e.removeChildren(); e.addText("true"); assertEquals(true, e.getTextAsBoolean(false)); assertEquals(true, e.getTextAsOptionalBoolean(null)); e.removeChildren(); e.addText("10"); assertEquals(10L, e.getTextAsLong(0));
@Test public void testContentType() { final Element e = new Element(NAME); assertEquals(ElementContentType.EMPTY, e.getContentType()); e.addComment("Hello"); assertEquals(ElementContentType.NON_TEXT, e.getContentType()); e.removeChildren(); assertEquals(ElementContentType.EMPTY, e.getContentType()); e.addText("Hello"); assertEquals(ElementContentType.TEXT, e.getContentType()); e.addText("World"); assertEquals(ElementContentType.TEXT, e.getContentType()); e.addComment("Hello"); assertEquals(ElementContentType.MIXED, e.getContentType()); e.removeChildren(); assertEquals(ElementContentType.EMPTY, e.getContentType()); e.addElement("child"); assertEquals(ElementContentType.NON_TEXT, e.getContentType()); e.addComment("Hello"); assertEquals(ElementContentType.NON_TEXT, e.getContentType()); e.addText("World"); assertEquals(ElementContentType.MIXED, e.getContentType()); }
@Test public void testRemoveChildren() { final Element root = new Element(NAME); final Element child = root.addElement(NAME); root.removeChildren(); assertEquals(0, root.getChildrenCount()); assertFalse(root.removeChild(child)); root.addElement(NAME); root.addComment("Hello"); root.addElement(NAME); root.addText("World"); root.addElement(NAME); root.removeComments(); assertEquals(4, root.getChildrenCount()); root.removeTexts(); assertEquals(3, root.getChildrenCount()); root.addElement(NAME1); root.removeElementsNamed(NAME); assertEquals(1, root.getChildrenCount()); }
@Test public void testChangeComments() { final Element root = new Element(NAME); root.addComment("hello", false); root.addComment("HELLO", false); root.changeComments(String::toUpperCase); assertEquals(2, root.getChildrenCount()); assertEquals("HELLO", root.getChildAt(Comment.class, 0).getContent()); assertEquals("HELLO", root.getChildAt(Comment.class, 1).getContent()); root.removeChildren(); final Element child1 = root.addElement(NAME1); final Element child2 = root.addElement(NAME2); final Element child3 = root.addElement(NAME1); child1.addComment("hello"); child2.addComment("hello"); child3.addComment("hel"); child3.addComment("lo", false); assertEquals(2, child3.getChildrenCount()); root.changeComments(String::toUpperCase, true); assertEquals(2, child3.getChildrenCount()); assertEquals("HELLO", child1.getChild(Comment.class).getContent()); assertEquals("HEL", child3.getChildAt(Comment.class, 0).getContent()); }
@Test public void testChangeTexts() { final Element root = new Element(NAME); root.addText("hello", false); root.addText("HELLO", false); root.changeTexts(String::toUpperCase); assertEquals(2, root.getChildrenCount()); assertEquals("HELLO", root.getChildAt(Text.class, 0).getContent()); assertEquals("HELLO", root.getChildAt(Text.class, 1).getContent()); root.removeChildren(); final Element child1 = root.addElement(NAME1); final Element child2 = root.addElement(NAME2); final Element child3 = root.addElement(NAME1); child1.addText("hello"); child2.addText("hello"); child3.addText("hel"); child3.addText("lo", false); assertEquals(2, child3.getChildrenCount()); root.changeTexts(String::toUpperCase); assertEquals(2, child3.getChildrenCount()); root.changeNamedTexts(NAME1, String::toUpperCase); assertEquals(1, child3.getChildrenCount()); assertEquals("HELLO", child1.getText()); assertEquals("HELLO", child3.getText()); }
assertEquals(1, root.getChildrenCount(Comment.class)); root.removeChildren(); root.addElement(NAME); root.addComment("Hello", false); assertEquals(2, root.getChildrenCount(Text.class)); root.removeChildren(); root.addComment("hello", false); root.addComment("hello", false);