从org.w3c.dom.Element转换为SVGSVGElement失败

时间:2013-03-09 10:10:08

标签: java java-me svg

说真的,如果我这样投:

(SVGSVGElement) (((SVGImage)blabla).getDocument().getDocumentElement())

它有效,但如果我尝试

(SVGSVGElement)doc.getElementById(some_id)

我得到强制转换错误,但是getDocumentElement()和getElementById()都返回相同的类型org.w3c.dom.Element,我的全局目标是获取从文件加载的svg-scene上的某些图像的X坐标,为了缩放场景,使这个图像适合可见区域。我试图通过((SVGSVGElement)doc.getElementById(some_id)).getBBox().getX()实现这一目标,但你看到我得到了什么。

1 个答案:

答案 0 :(得分:1)

org.w3c.dom.Element是DOM体系结构中最低的接口之一,许多类扩展了它,特别是SVGSVGElement

您需要弄清楚doc.getElementById(some_id)中返回的类型,然后根据该信息进行投射:

log.debug("Returned class is - " + doc.getElementById(some_id).getClass().getName();
//or
System.out.println("Returned class is - " + doc.getElementById(some_id).getClass().getName();

最简单的方法是尝试直接在调试器中了解类型。

我知道的唯一案例似乎是正确的,但是发生了ClassCastException:

  • 类加载器问题(当两个不同的库中的一个类被加载到两个不同的类加载器中时)
  • AOP代理问题