import org.w3c.dom.*; import org.w3c.dom.traversal.*; public class TextExtractor { public static String getText(Node node) { if (node == null) return ""; // Set up the iterator Document doc = node.getOwnerDocument(); DocumentTraversal traversable = (DocumentTraversal) doc; int whatToShow = NodeFilter.SHOW_TEXT | NodeFilter.SHOW_CDATA_SECTION; NodeIterator iterator = traversable.createNodeIterator(node, whatToShow, null, true); // Extract the text StringBuffer result = new StringBuffer(); Node current; while ((current = iterator.nextNode()) != null) { result.append(current.getNodeValue()); } return result.toString(); } }