@Override public N getFirstChild(N node) { return inner.getFirstChild(node); }
/** * Gets the first child element of an element, if there is one. * * @param doc document accessor * @param element parent element * @return the first child element of {@code element} if there is one, * otherwise {@code null}. */ public static <N, E extends N> E getFirstChildElement(ReadableDocument<N, E, ?> doc, E element) { return getNextElementInclusive(doc, doc.getFirstChild(element), true); }
/** * Construct a point inside the start of the given element (just after the * start tag). */ public static <N, E extends N> El<N> start( ReadableDocument<N,E,?> doc, E element) { return new El<N>(element, doc.getFirstChild(element)); }
@Override public N getFirstChild(N node) { N find = inner.getFirstChild(node); return getNextVisibleNodeDepthFirst(find, node, true); }
/** * Counts how many children a particular element in a document has. * * @param doc The doc that the element is in. * @param elem An element. * @return Number of children the specified element has. */ public static <N, E extends N, T extends N> int countChildren( ReadableDocument<Node, Element, Text> doc, Element elem) { int children = 0; Node currentChild = doc.getFirstChild(elem); while (currentChild != null) { children++; currentChild = doc.getNextSibling(currentChild); } return children; }
/** * Worker * @param element * @return XML fragment describing children */ private int addChildXmlFragment(E element) { int size = 0; for (N n = view.getFirstChild(element); n != null; n = view.getNextSibling(n)) { size += addNode(n); } return size; }
private void getInnerTextOfElement(E element, StringBuilder builder) { N child = document.getFirstChild(element); while (child != null) { getInnerTextOfNode(child, builder); child = document.getNextSibling(child); } } }
/** * Similar to {@link #inElement(Object, Object)} * * @param element Parent * @param nodeBefore The node BEFORE the point, or null for the START of parent * @return point */ public static <N, E extends N, T extends N> El<N> inElementReverse( ReadableDocument<N,E,T> doc, E element, N nodeBefore) { return new El<N>(element, nodeBefore == null ? doc.getFirstChild(element) : doc.getNextSibling(nodeBefore)); }
/** * @param doc * @return true if the given document is an old-style-paragraph document */ @Deprecated private static <N, E extends N, T extends N> boolean isUnsupportedParagraphDocument( ReadableDocument<N, E, T> doc) { if (doc.getFirstChild(doc.getDocumentElement()) == null) { // If the document is empty, check what the default global option is return !USE_LINE_CONTAINERS_BY_DEFAULT; } // Testing all children in the case of special <input> tags N root = doc.getDocumentElement(); for (N child = doc.getFirstChild(root); child != null; child = doc.getNextSibling(child)) { if (isUnsupportedParagraphElement(doc, child)) { return true; } } return false; }
/** * Apply action to a node and its descendants. * * @param doc view for traversing * @param node reference node * @param nodeAction action to apply to node and its descendants */ public static <N, E extends N, T extends N> void traverse(ReadableDocument<N, E, T> doc, N node, NodeAction<N> nodeAction) { for (; node != null; node = doc.getNextSibling(node)) { nodeAction.apply(node); traverse(doc, doc.getFirstChild(node), nodeAction); } }
/** * Worker for appendNode * @param node * @return item length of node */ private int addNode(N node) { E element = view.asElement(node); if (element != null) { boolean selfClosing = isSelfClosing(element) && view.getFirstChild(element) == null; builder.append(startTag(element, selfClosing)); int len = 2; if (!selfClosing) { len += addChildXmlFragment(element); builder.append(endTag(element)); } return len; } else { String data = view.getData(view.asText(node)); return addText(permittedChars.coerceString(data)); } }
/** * Writes an element's information out to an initialization cursor, optionally recursing * to do likewise for its children. * * @param doc Document the node resides within. * @param element Element containing information to be written. * @param cursor Cursor to write results out to. * @param recurse Whether or not to write children to the operation. */ public static <N, E extends N, T extends N> void buildDomInitializationFromElement( ReadableDocument<N, E, T> doc, E element, DocInitializationCursor cursor, boolean recurse) { cursor.elementStart(doc.getTagName(element), new AttributesImpl(doc.getAttributes(element))); if (recurse) { for (N child = doc.getFirstChild(element); child != null; child = doc.getNextSibling(child)) { buildDomInitializationFromSubtree(doc, child, cursor); } } cursor.elementEnd(); } }
E element = doc.asElement(start); if (element != null) { next = rightwards ? doc.getFirstChild(element) : doc.getLastChild(element); if (next != null) { return next;
Element container = doc.getFirstChild(doc.getDocumentElement()).asElement(); assertNull(DocHelper.getElementWithTagName(doc, "x", container)); Element expectedY = doc.getFirstChild(container).asElement(); assertSame(expectedY, DocHelper.getElementWithTagName(doc, "y", container)); Element container = doc.getFirstChild(doc.getDocumentElement()).asElement(); Element expectedZ = doc.getLastChild(container).asElement(); assertSame(expectedZ, DocHelper.getElementWithTagName(doc, "z")); Element container = doc.getFirstChild(doc.getDocumentElement()).asElement(); Element y = doc.getFirstChild(container).asElement(); assertNull(DocHelper.getElementWithTagName(doc, "x", y)); Element x = doc.getFirstChild(doc.getDocumentElement()).asElement(); assertNull(DocHelper.getElementWithTagName(doc, "z", x)); Element expectedX = doc.getFirstChild(doc.getFirstChild( doc.getDocumentElement())).asElement(); assertSame(expectedX, DocHelper.getElementWithTagName(doc, "x"));
Element container = doc.getFirstChild(doc.getDocumentElement()).asElement(); assertNull(DocHelper.getElementWithTagName(doc, "x", container)); Element expectedY = doc.getFirstChild(container).asElement(); assertSame(expectedY, DocHelper.getElementWithTagName(doc, "y", container)); Element container = doc.getFirstChild(doc.getDocumentElement()).asElement(); Element expectedZ = doc.getLastChild(container).asElement(); assertSame(expectedZ, DocHelper.getElementWithTagName(doc, "z")); Element container = doc.getFirstChild(doc.getDocumentElement()).asElement(); Element y = doc.getFirstChild(container).asElement(); assertNull(DocHelper.getElementWithTagName(doc, "x", y)); Element x = doc.getFirstChild(doc.getDocumentElement()).asElement(); assertNull(DocHelper.getElementWithTagName(doc, "z", x)); Element expectedX = doc.getFirstChild(doc.getFirstChild( doc.getDocumentElement())).asElement(); assertSame(expectedX, DocHelper.getElementWithTagName(doc, "x"));
Element container = doc.getFirstChild(doc.getDocumentElement()).asElement(); assertNull(DocHelper.getLastElementWithTagName(doc, "x", container)); Element expectedY = doc.getFirstChild(container).asElement(); assertSame(expectedY, DocHelper.getLastElementWithTagName(doc, "y", container)); Element container = doc.getFirstChild(doc.getDocumentElement()).asElement(); Element expectedY = doc.getFirstChild(container).asElement(); assertSame(expectedY, DocHelper.getLastElementWithTagName(doc, "y")); Element container = doc.getFirstChild(doc.getDocumentElement()).asElement(); Element y = doc.getFirstChild(container).asElement(); assertNull(DocHelper.getLastElementWithTagName(doc, "x", y)); Element expectedX = doc.getFirstChild(doc.getLastChild( doc.getDocumentElement())).asElement(); assertSame(expectedX, DocHelper.getLastElementWithTagName(doc, "x"));
Element container = doc.getFirstChild(doc.getDocumentElement()).asElement(); assertNull(DocHelper.getLastElementWithTagName(doc, "x", container)); Element expectedY = doc.getFirstChild(container).asElement(); assertSame(expectedY, DocHelper.getLastElementWithTagName(doc, "y", container)); Element container = doc.getFirstChild(doc.getDocumentElement()).asElement(); Element expectedY = doc.getFirstChild(container).asElement(); assertSame(expectedY, DocHelper.getLastElementWithTagName(doc, "y")); Element container = doc.getFirstChild(doc.getDocumentElement()).asElement(); Element y = doc.getFirstChild(container).asElement(); assertNull(DocHelper.getLastElementWithTagName(doc, "x", y)); Element expectedX = doc.getFirstChild(doc.getLastChild( doc.getDocumentElement())).asElement(); assertSame(expectedX, DocHelper.getLastElementWithTagName(doc, "x"));
N firstChild = doc.getFirstChild(element); if (firstChild == null) {