String value = node.getNodeValue(); if (!StringUtil.isBlank(value)) { if (isParentNodeOneOfFosterTableElements(node.getParentNode())) { fosterTexts.add((Text) node); Element element = (Element) node; isTable = isTableElement(node); isParentNodeOneOfFosterTableElements(parentNode) && !isOneOfTableElements(element) ) { Node childNode = node.getChild(i); boolean done = findFosterNodes(childNode); if (!done) { continue allchilds;
/** * Performs the fix for elements. */ protected void fixElements() { for (Element fosterElement : fosterElements) { // find parent table Element lastTable = findLastTable(fosterElement); Node fosterElementParent = fosterElement.getParentNode(); // filter our foster element Node[] fosterChilds = fosterElement.getChildNodes(); for (Node fosterChild : fosterChilds) { if (fosterChild.getNodeType() == Node.NodeType.ELEMENT) { if (isOneOfTableElements((Element) fosterChild)) { // move all child table elements outside // the foster element fosterChild.detachFromParent(); fosterElementParent.insertBefore(fosterChild, fosterElement); } } } // finally, move foster element above the table fosterElement.detachFromParent(); lastTable.getParentNode().insertBefore(fosterElement, lastTable); } }
/** * Fixes foster elements. */ public void fixFosterElements(final Document document) { findFosterNodes(document); fixElements(); fixText(); }
HtmlFosterRules fosterRules = new HtmlFosterRules(); fosterRules.fixFosterElements(rootNode);
protected void fixText() { for (Text fosterText : fosterTexts) { // find parent table Element lastTable = findLastTable(fosterText); // move foster element above the table fosterText.detachFromParent(); Node tablesPreviousNode = lastTable.getPreviousSibling(); if (tablesPreviousNode.getNodeType() == Node.NodeType.TEXT) { // append to previous text node Text textNode = (Text) tablesPreviousNode; String text = textNode.getNodeValue(); textNode.setNodeValue(text + fosterText.getNodeValue()); } else { // insert text node before the table lastTable.getParentNode().insertBefore(fosterText, lastTable); } } }
HtmlFosterRules fosterRules = new HtmlFosterRules(); fosterRules.fixFosterElements(rootNode);
protected void fixText() { for (Text fosterText : fosterTexts) { // find parent table Element lastTable = findLastTable(fosterText); // move foster element above the table fosterText.detachFromParent(); Node tablesPreviousNode = lastTable.getPreviousSibling(); if (tablesPreviousNode.getNodeType() == Node.NodeType.TEXT) { // append to previous text node Text textNode = (Text) tablesPreviousNode; String text = textNode.getNodeValue(); textNode.setNodeValue(text + fosterText.getNodeValue()); } else { // insert text node before the table lastTable.getParentNode().insertBefore(fosterText, lastTable); } } }
String value = node.getNodeValue(); if (!StringUtil.isBlank(value)) { if (isParentNodeOneOfFosterTableElements(node.getParentNode())) { fosterTexts.add((Text) node); Element element = (Element) node; isTable = isTableElement(node); isParentNodeOneOfFosterTableElements(parentNode) && !isOneOfTableElements(element) ) { Node childNode = node.getChild(i); boolean done = findFosterNodes(childNode); if (!done) { continue allchilds;
/** * Fixes foster elements. */ public void fixFosterElements(final Document document) { findFosterNodes(document); fixElements(); fixText(); }
/** * Performs the fix for elements. */ protected void fixElements() { for (Element fosterElement : fosterElements) { // find parent table Element lastTable = findLastTable(fosterElement); Node fosterElementParent = fosterElement.getParentNode(); // filter our foster element Node[] fosterChilds = fosterElement.getChildNodes(); for (Node fosterChild : fosterChilds) { if (fosterChild.getNodeType() == Node.NodeType.ELEMENT) { if (isOneOfTableElements((Element) fosterChild)) { // move all child table elements outside // the foster element fosterChild.detachFromParent(); fosterElementParent.insertBefore(fosterChild, fosterElement); } } } // finally, move foster element above the table fosterElement.detachFromParent(); lastTable.getParentNode().insertBefore(fosterElement, lastTable); } }
HtmlFosterRules fosterRules = new HtmlFosterRules(); fosterRules.fixFosterElements(rootNode);
protected void fixText() { for (Text fosterText : fosterTexts) { // find parent table Element lastTable = findLastTable(fosterText); // move foster element above the table fosterText.detachFromParent(); Node tablesPreviousNode = lastTable.getPreviousSibling(); if (tablesPreviousNode.getNodeType() == Node.NodeType.TEXT) { // append to previous text node Text textNode = (Text) tablesPreviousNode; String text = textNode.getNodeValue(); textNode.setNodeValue(text + fosterText.getNodeValue()); } else { // insert text node before the table lastTable.getParentNode().insertBefore(fosterText, lastTable); } } }
String value = node.getNodeValue(); if (!StringUtil.isBlank(value)) { if (isParentNodeOneOfFosterTableElements(node.getParentNode())) { fosterTexts.add((Text) node); Element element = (Element) node; isTable = isTableElement(node); isParentNodeOneOfFosterTableElements(parentNode) && !isOneOfTableElements(element) ) { Node childNode = node.getChild(i); boolean done = findFosterNodes(childNode); if (!done) { continue allchilds;
/** * Fixes foster elements. */ public void fixFosterElements(Document document) { findFosterNodes(document); fixElements(); fixText(); }
/** * Performs the fix for elements. */ protected void fixElements() { for (Element fosterElement : fosterElements) { // find parent table Element lastTable = findLastTable(fosterElement); Node fosterElementParent = fosterElement.getParentNode(); // filter our foster element Node[] fosterChilds = fosterElement.getChildNodes(); for (Node fosterChild : fosterChilds) { if (fosterChild.getNodeType() == Node.NodeType.ELEMENT) { if (isOneOfTableElements((Element) fosterChild)) { // move all child table elements outside // the foster element fosterChild.detachFromParent(); fosterElementParent.insertBefore(fosterChild, fosterElement); } } } // finally, move foster element above the table fosterElement.detachFromParent(); lastTable.getParentNode().insertBefore(fosterElement, lastTable); } }