1
package org.dbdoclet.xiphias.dom;
3
import java.util.ArrayList;
5
import org.w3c.dom.Element;
6
import org.w3c.dom.NamedNodeMap;
7
import org.w3c.dom.Node;
8
import org.w3c.dom.NodeList;
10
public class DOMTraverser {
12
private ArrayList<INodeVisitor> visitors = new ArrayList<INodeVisitor>();
14
public DOMTraverser(INodeVisitor visitor) {
18
public void addVisitor(INodeVisitor visitor) {
19
visitors.add(visitor);
22
public void traverse(Node node) throws Exception {
24
if (node.getNodeType() == Node.ELEMENT_NODE) {
30
if ((node.getNodeType() == Node.ELEMENT_NODE) && node.hasAttributes()) {
32
NamedNodeMap attrs = ((Element) node).getAttributes();
34
for (int i = 0; i < attrs.getLength(); i++) {
35
Node attr = attrs.item(i);
40
if (node.hasChildNodes()) {
42
NodeList children = node.getChildNodes();
44
for (int i = 0; i < children.getLength(); i++) {
45
Node child = children.item(i);
50
if (node.getNodeType() == Node.ELEMENT_NODE) {
56
private void openTag(Node node) throws Exception {
58
for (INodeVisitor visitor : visitors) {
59
visitor.openTag(node);
63
private void accept(Node node) throws Exception {
65
for (INodeVisitor visitor : visitors) {
70
private void closeTag(Node node) throws Exception {
72
for (INodeVisitor visitor : visitors) {
73
visitor.closeTag(node);