/*
Java, XML, and Web Services Bible
Mike Jasnowski
ISBN: 0-7645-4847-6
*/
import org.apache.xerces.parsers.DOMParser;
import org.xml.sax.SAXException;
import org.w3c.dom.*;
import org.apache.xerces.dom.*;
import java.io.IOException;
import org.w3c.dom.events.*;
import org.apache.xerces.dom.events.*;
public class DemoEventsModule implements EventListener {
public static void main(String args[]) throws SAXException, IOException {
new DemoEventsModule();
}
public DemoEventsModule() throws SAXException, IOException {
DOMParser parser = new DOMParser();
parser.setFeature(
"http://apache.org/xml/features/dom/defer-node-expansion",
false);
parser.parse("games.xml");
Document doc = parser.getDocument();
//((DocumentImpl)doc).setMutationEvents(true);
Node node = doc.getDocumentElement().getFirstChild();
Node clone = node.cloneNode(true);
((DocumentImpl) doc).addEventListener("DOMNodeRemoved", this, false);
EventTarget evTarget = (EventTarget) doc;
evTarget.addEventListener("DOMNodeInserted", this, false);
// Remove a node which causes an event //
doc.getDocumentElement().removeChild(node);
doc.getDocumentElement().appendChild(clone);
}
public void handleEvent(Event ev) {
if (ev.getType().equals(MutationEventImpl.DOM_NODE_REMOVED)) {
Node node = (Node) ev.getTarget();
Node parentNode = node.getParentNode();
System.out.println("Node " + node.getNodeName()
+ " was removed from " + parentNode.getNodeName());
}
if (ev.getType().equals(MutationEventImpl.DOM_NODE_INSERTED)) {
Node node = (Node) ev.getTarget();
Node parentNode = node.getParentNode();
System.out
.println("Node " + node.getNodeName()
+ " was inserted as a child of "
+ parentNode.getNodeName());
}
}
}
//game.xml
/*
<?xml version="1.0"?>
<games>
<game genre="shooter">XML Invaders</game>
<game genre="rpg">A Node in the XPath</game>
<game genre="action">XPath Racers</game>
</games>
*/
|