Remove all white space text nodes from an DOM tree. - Java XML

Java examples for XML:DOM Document

Description

Remove all white space text nodes from an DOM tree.

Demo Code

/*/* w  ww. jav  a2 s .c  o  m*/
    Open Aviation Map
    Copyright (C) 2012-2013 ??kos Mar?y

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU Affero General Public License as
    published by the Free Software Foundation, either version 3 of the
    License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU Affero General Public License for more details.

    You should have received a copy of the GNU Affero General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
//package com.java2s;

import java.util.HashSet;

import java.util.Set;

import org.w3c.dom.Document;

import org.w3c.dom.Node;
import org.w3c.dom.traversal.DocumentTraversal;
import org.w3c.dom.traversal.NodeFilter;
import org.w3c.dom.traversal.NodeIterator;

public class Main {
    /**
     * Remove all white space text nodes from an DOM tree.
     *
     * @param document the DOM tree to remove all XML white space text nodes
     *         from.
     */
    public static void removeWhitespace(Document document) {
        Set<Node> toRemove = new HashSet<Node>();
        DocumentTraversal t = (DocumentTraversal) document;
        NodeIterator it = t.createNodeIterator(document,
                NodeFilter.SHOW_TEXT, null, true);

        for (Node n = it.nextNode(); n != null; n = it.nextNode()) {
            if (n.getNodeValue().trim().isEmpty()) {
                toRemove.add(n);
            }
        }

        for (Node n : toRemove) {
            n.getParentNode().removeChild(n);
        }
    }
}

Related Tutorials