blob: 13afbc86479ef113a553f9b29cf166b32f4c73ae [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2001, 2004 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
* Jens Lukowski/Innoopract - initial renaming/restructuring
*
*******************************************************************************/
package org.eclipse.wst.xml.core.internal.util;
import java.io.PrintStream;
import org.eclipse.wst.sse.core.text.IStructuredDocumentRegion;
import org.eclipse.wst.xml.core.document.XMLNode;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class DebugDocument {
public static void dump(Document document) {
if (document == null)
return;
System.out.println("Dump of DOM"); //$NON-NLS-1$
dump(document, System.out);
//
System.out.println();
System.out.println("= = = = = ="); //$NON-NLS-1$
System.out.println();
}
public static void dump(Document document, PrintStream out) {
Node node = document.getFirstChild();
while (node != null) {
dump(node, out);
node = node.getNextSibling();
}
}
public static void dump(Node topNode) {
dump(topNode, System.out);
}
public static void dump(Node topNode, PrintStream out) {
if (topNode == null)
return;
// print out this node
//
printNode(topNode, out);
// now print out its children
//NodeList nodes = topNode.getChildNodes();
//int len = nodes.getLength();
//for (int i = 0; i < len; i++) {
//Node node = nodes.item(i);
//dump(node, out);
//}
}
public static void printNode(Node topNode) {
printNode(topNode, System.out);
}
public static void printNode(Node topNode, PrintStream out) {
// print out this node
//
IStructuredDocumentRegion firstStructuredDocumentRegion = ((XMLNode) topNode).getFirstStructuredDocumentRegion();
IStructuredDocumentRegion lastStructuredDocumentRegion = ((XMLNode) topNode).getLastStructuredDocumentRegion();
if ((firstStructuredDocumentRegion == null) || (lastStructuredDocumentRegion == null)) {
// no text to output
} else {
int start = firstStructuredDocumentRegion.getStart();
int end = lastStructuredDocumentRegion.getEnd();
String outString = topNode.toString();
outString = org.eclipse.wst.sse.core.util.StringUtils.escape(outString);
out.println("[" + start + ", " + end + "]" + outString); //$NON-NLS-3$//$NON-NLS-2$//$NON-NLS-1$
}
// now do its children
NodeList nodes = topNode.getChildNodes();
int len = nodes.getLength();
for (int i = 0; i < len; i++) {
Node childNode = nodes.item(i);
printNode(childNode, out);
}
}
public DebugDocument() {
super();
}
}