package org.qrone.r7.parser;
import org.w3c.dom.CDATASection;
import org.w3c.dom.CharacterData;
import org.w3c.dom.Document;
import org.w3c.dom.DocumentType;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.ProcessingInstruction;
import org.w3c.dom.Text;
public abstract class HTML5Visitor {
public void visit(Document e){
accept(e);
}
public abstract void visit(Element e);
public abstract void visit(Text n);
public void visit(CDATASection n) {
System.err.println("CDATASection found = " + n.getNodeValue());
}
public void visit(CharacterData n) {
System.err.println("CharacterData found = " + n.getNodeValue());
}
public void visit(ProcessingInstruction n) {
System.err.println("ProcessingInstruction found = " + n.getNodeValue());
}
public void visit(DocumentType n) {
System.err.println("DocumentType found = " + n.getNodeValue());
}
public void visit(Node n) {
dispatch(n);
}
protected void accept(Document e){
visit(e.getDocumentElement());
}
protected void accept(Element e){
NodeList l = e.getChildNodes();
for (int i = 0; i < l.getLength(); i++) {
dispatch(l.item(i));
}
}
protected void dispatch(Node n){
if(n instanceof Document)
visit((Document)n);
else if(n instanceof Element)
visit((Element)n);
else if(n instanceof CDATASection)
visit((CDATASection)n);
else if(n instanceof Text)
visit((Text)n);
else if(n instanceof CharacterData)
visit((CharacterData)n);
else if(n instanceof ProcessingInstruction)
visit((ProcessingInstruction)n);
else if(n instanceof DocumentType)
visit((DocumentType)n);
}
}