Java + DOM:注册和使用修改监听器:教程?

时间:2010-03-21 15:00:40

标签: java xml events dom addeventlistener

请指教我一些关于如何在Java的DOM实现中注册和使用修改监听器的教程或其他解释示例。

在网络上,我只找到Javascript或Flex示例。

我的目标是了解Node何时被修改。

我尝试了几种方法,没有任何作用。可能是Java的DOM不支持这个功能吗?

1 个答案:

答案 0 :(得分:7)

知道了!

投射就是诀窍!

我一直在寻找org.w3.dom.events.EventTarget的实现,但似乎只有内部类实现它。所以它只需要手工铸造(只需假设Node instanceof EventTarget)。

org.w3c.dom.events.EventListener myModificationListener =
  new org.w3c.dom.events.EventListener() {

    @Override
    public void handleEvent(Event e) {
      if (e instanceof MutationEvent) {
        MutationEvent me = (MutationEvent) e;
        System.out.println("type: " + me.getType()
          + ", dest: " + me.getTarget());
      }
    }

  };

Node someDomNode = ...

// here the unusual casting magic happens
((EventTarget) node).addEventListener(
  "DOMSubtreeModified", // constant
  myModificationListener, true);

// modify the node here by appending a child
// -> listener gets invoked