protected void _element(final Element element) throws IOException { String nodeName = resolveNodeName(element); appendable.append('<'); appendable.append(nodeName); int attrCount = element.getAttributesCount(); if (attrCount != 0) { for (int i = 0; i < attrCount; i++) { Attribute attr = element.getAttribute(i); appendable.append(' '); renderAttribute(element, attr, appendable); } } int childCount = element.getChildNodesCount(); if (element.selfClosed && childCount == 0) { appendable.append("/>"); return; } appendable.append('>'); if (element.voidElement) { return; } if (childCount != 0) { elementBody(element); } appendable.append("</"); appendable.append(nodeName); appendable.append('>'); }
protected void elementBody(final Element element) throws IOException { int childCount = element.getChildNodesCount(); if (element.isRawTag()) { for (int i = 0; i < childCount; i++) { Node childNode = element.getChild(i); if (childNode.getNodeType() == Node.NodeType.TEXT) { appendable.append(childNode.getNodeValue()); } else { childNode.visit(this); } } } else { element.visitChildren(this); } }
if (element.getChildNodesCount() > 0) {
@Test void testWhitespaces() throws IOException { String xmlContent = "<foo> <!--c--> <bar> </bar> <x/> </foo>"; LagartoDOMBuilder lagartoDOMBuilder = new LagartoDOMBuilder(); lagartoDOMBuilder.enableXmlMode(); lagartoDOMBuilder.getConfig().setSelfCloseVoidTags(true); Document doc = lagartoDOMBuilder.parse(xmlContent); assertEquals(1, doc.getChildNodesCount()); Element foo = (Element) doc.getChild(0); assertEquals("foo", foo.getNodeName()); assertEquals(3, foo.getChildNodesCount()); Element bar = (Element) foo.getChild(1); assertEquals("bar", bar.getNodeName()); assertEquals(1, bar.getChildNodesCount()); // must be 1 as whitespaces are between open/closed tag assertEquals("<foo><!--c--><bar> </bar><x/></foo>", doc.getHtml()); assertTrue(doc.check()); }
@Test void testPeopleXml() throws IOException { File file = new File(testDataRoot, "people.xml"); String xmlContent = FileUtil.readString(file); LagartoDOMBuilder lagartoDOMBuilder = new LagartoDOMBuilder(); lagartoDOMBuilder.enableXmlMode(); Document doc = lagartoDOMBuilder.parse(xmlContent); assertEquals(2, doc.getChildNodesCount()); // not 3! XmlDeclaration xml = (XmlDeclaration) doc.getFirstChild(); assertEquals(0, xml.getAttributesCount()); Element peopleList = (Element) doc.getChild(1); assertEquals(1, peopleList.getChildNodesCount()); Element person = peopleList.getFirstChildElement(); assertEquals(3, person.getChildNodesCount()); Element name = (Element) person.getChild(0); assertEquals("Fred Bloggs", name.getTextContent()); assertEquals("Male", person.getChild(2).getTextContent()); xmlContent = StringUtil.removeChars(xmlContent, "\n\r\t"); assertEquals(xmlContent, doc.getHtml()); assertTrue(doc.check()); }
@Test void testDetach() { Document document = new Document(); Element html = new Element(document, "html"); document.addChild(html); Element div1 = new Element(document, "div"); html.addChild(div1); Element div2 = new Element(document, "div"); div1.addChild(div2); div1.detachFromParent(); assertEquals(0, html.getChildNodesCount()); assertNull(div1.getParentNode()); assertTrue(document.check()); }
html.addChild(div3); assertEquals(3, html.getChildNodesCount()); assertEquals(3, html.getChildElementsCount()); assertEquals(3, html.getChildElementsCount("div")); assertEquals(2, html.getChildNodesCount()); assertEquals(2, html.getChildElementsCount()); assertEquals(2, html.getChildElementsCount("div")); assertEquals(3, html.getChildNodesCount()); assertEquals(3, html.getChildElementsCount()); assertEquals(3, html.getChildElementsCount("div")); assertEquals(2, html.getChildNodesCount()); assertEquals(2, html.getChildElementsCount()); assertEquals(2, html.getChildElementsCount("div")); assertEquals(3, html.getChildNodesCount()); assertEquals(3, html.getChildElementsCount()); assertEquals(3, html.getChildElementsCount("div"));
assertNotNull(html); assertEquals("html", html.getNodeName()); assertEquals(1, html.getChildNodesCount()); assertEquals(0, html.getAttributesCount()); assertNotNull(body); assertEquals("body", body.getNodeName()); assertEquals(1, body.getChildNodesCount()); assertNull(body.getAttribute("id")); assertEquals(0, body.getAttributesCount()); assertNotNull(p); assertEquals("p", p.getNodeName()); assertEquals(3, p.getChildNodesCount()); assertEquals("w173", p.getAttribute("id")); assertEquals(1, p.getAttributesCount()); assertEquals(0, br.getChildNodesCount()); assertEquals(0, br.getAttributesCount());
node.addChild(textHey); assertEquals(3, node.getChildNodesCount()); assertEquals(1, node.getChildElementsCount()); assertEquals(1, node.getChildElementsCount("em")); b.addChild(textJodd2); assertEquals(4, node.getChildNodesCount()); assertEquals(2, node.getChildElementsCount()); assertEquals(1, node.getChildElementsCount("em"));
@Test void testSpecialCases() { Document document = new Document(); Element html = new Element(document, "html"); document.addChild(html); assertEquals(0, html.getChildNodesCount()); assertNull(html.getChild(0)); assertNull(html.getChild(1000)); assertEquals(0, html.getChildNodes().length); assertNull(html.getFirstChild()); assertNull(html.getFirstChildElement()); assertNull(html.getFirstChildElement("h1")); assertNull(html.getLastChild()); assertNull(html.getLastChildElement()); assertNull(html.getLastChildElement("h1")); assertEquals(0, html.getSiblingIndex()); assertEquals(0, html.getSiblingElementIndex()); assertEquals(0, html.getSiblingNameIndex()); assertTrue(document.check()); }
@Override public void toHtml(Appendable appendable) throws IOException { appendable.append('<'); appendable.append(nodeName); int attrCount = getAttributesCount(); if (attrCount != 0) { for (int i = 0; i < attrCount; i++) { Attribute attr = getAttribute(i); appendable.append(' '); attr.toHtml(appendable); } } int childCount = getChildNodesCount(); if (selfClosed && childCount == 0) { appendable.append("/>"); return; } appendable.append('>'); if (voidElement) { return; } if (childCount != 0) { toInnerHtml(appendable); } appendable.append("</"); appendable.append(nodeName); appendable.append('>'); }
protected void _element(final Element element) throws IOException { String nodeName = resolveNodeName(element); appendable.append('<'); appendable.append(nodeName); int attrCount = element.getAttributesCount(); if (attrCount != 0) { for (int i = 0; i < attrCount; i++) { Attribute attr = element.getAttribute(i); appendable.append(' '); renderAttribute(element, attr, appendable); } } int childCount = element.getChildNodesCount(); if (element.selfClosed && childCount == 0) { appendable.append("/>"); return; } appendable.append('>'); if (element.voidElement) { return; } if (childCount != 0) { elementBody(element); } appendable.append("</"); appendable.append(nodeName); appendable.append('>'); }
protected void _element(Element element) throws IOException { String nodeName = resolveNodeName(element); appendable.append('<'); appendable.append(nodeName); int attrCount = element.getAttributesCount(); if (attrCount != 0) { for (int i = 0; i < attrCount; i++) { Attribute attr = element.getAttribute(i); appendable.append(' '); renderAttribute(element, attr, appendable); } } int childCount = element.getChildNodesCount(); if (element.selfClosed && childCount == 0) { appendable.append("/>"); return; } appendable.append('>'); if (element.voidElement) { return; } if (childCount != 0) { elementBody(element); } appendable.append("</"); appendable.append(nodeName); appendable.append('>'); }
protected void elementBody(final Element element) throws IOException { int childCount = element.getChildNodesCount(); if (element.isRawTag()) { for (int i = 0; i < childCount; i++) { Node childNode = element.getChild(i); if (childNode.getNodeType() == Node.NodeType.TEXT) { appendable.append(childNode.getNodeValue()); } else { childNode.visit(this); } } } else { element.visitChildren(this); } }
protected void elementBody(Element element) throws IOException { int childCount = element.getChildNodesCount(); if (element.isRawTag()) { for (int i = 0; i < childCount; i++) { Node childNode = element.getChild(i); if (childNode.getNodeType() == Node.NodeType.TEXT) { appendable.append(childNode.getNodeValue()); } else { childNode.visit(this); } } } else { element.visitChildren(this); } }
if (element.getChildNodesCount() > 0) {
if (element.getChildNodesCount() > 0) {