add trim() method to XML (removes #text nodes)

This commit is contained in:
Ben Fry
2014-08-12 10:15:05 -04:00
parent 02a20022ee
commit 7d11ece606
3 changed files with 65 additions and 8 deletions

View File

@@ -33,6 +33,9 @@ import org.xml.sax.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.*;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathFactory;
import processing.core.PApplet;
@@ -582,6 +585,25 @@ public class XML implements Serializable {
}
public void trim() {
try {
XPathFactory xpathFactory = XPathFactory.newInstance();
XPathExpression xpathExp =
xpathFactory.newXPath().compile("//text()[normalize-space(.) = '']");
NodeList emptyTextNodes = (NodeList)
xpathExp.evaluate(node, XPathConstants.NODESET);
// Remove each empty text node from document.
for (int i = 0; i < emptyTextNodes.getLength(); i++) {
Node emptyTextNode = emptyTextNodes.item(i);
emptyTextNode.getParentNode().removeChild(emptyTextNode);
}
} catch (Exception e) {
throw new RuntimeException(e);
}
}
// /** Remove whitespace nodes. */
// public void trim() {
////// public static boolean isWhitespace(XML xml) {