/** * Delete this node (that is, detach it from its parent) */ public void delete() throws XPathException { if (parent != null) { if (nodeKind == Type.ATTRIBUTE) { ((Element) parent.node).removeAttribute((Attribute) node); } else { ((ParentNode) parent.node).removeChild(node); } } }
/** re-route detach(). * to parent.removeChild(this); */ public void detach() { ParentNode parent = this.getParent(); if (parent != null) { if (parent instanceof Document) { parent.replaceChild(this, new Element("dummy")); } else { parent.removeChild(this); } } }
/** * Found more than one adjacent Text node; merge them. Appends forwards * and removes backwards to minimize memory copies of list elems. */ private void merge(ParentNode node, int i, int j) { int k = i; StringBuffer buf = new StringBuffer(node.getChild(k++).getValue()); while (k <= j) buf.append(node.getChild(k++).getValue()); k = j; while (k >= i) node.removeChild(k--); // replace run with compact merged Text node unless empty String norm = normalizeWhitespace(buf.toString()); if (norm.length() > 0) { node.insertChild(new Text(norm), i); } }
/** * Found more than one adjacent Text node; merge them. Appends forwards * and removes backwards to minimize memory copies of list elems. */ private void merge(ParentNode node, int i, int j) { int k = i; StringBuffer buf = new StringBuffer(node.getChild(k++).getValue()); while (k <= j) buf.append(node.getChild(k++).getValue()); k = j; while (k >= i) node.removeChild(k--); // replace run with compact merged Text node unless empty String norm = normalizeWhitespace(buf.toString()); if (norm.length() > 0) { node.insertChild(new Text(norm), i); } }
String norm = normalizeWhitespace(value); if (norm.length() == 0) { node.removeChild(i); } else if (!norm.equals(value)) { ((Text) child).setValue(norm);
String norm = normalizeWhitespace(value); if (norm.length() == 0) { node.removeChild(i); } else if (!norm.equals(value)) { ((Text) child).setValue(norm);