我没有看到任何类实现接口org.w3c.dom.Document的方法。那么为什么我们(通常)会调用此接口的getDocumentElement方法来获取根元素?为什么我们可以调用接口org.w3c.dom.Document的方法?
回答
org.w3c.dom.Document
是XML规范的一部分,它可以由许多不同的库实现。如果您想知道使用了哪种确切的实现方式,请尝试使用
org.w3c.dom.Document doc = <your instance>;
System.out.println(doc.getClass().getName());
在您调用方法的相同位置。这会告诉你实现类的名字,这些类将会有这些方法(或者它的超类)。
感谢您的回复。现在我懂了。 – Peter 2011-06-14 04:44:40
org.w3c.dom
包和它的类是Java API for XML Processing(JAXP)的一部分。它提供了为DOM Level 2 Core API提供Java语言绑定。
语言绑定的存在仅仅是为了提供一个可以由各种DOM解析器实现的接口。毕竟,不同的解析器会有不同的技术来维护表示DOM的内部数据结构。符合DOM Core API的多个JAXP解析器可以共存于JVM可用的库中。在运行时,只有其中一个将用于解析XML文档。
一旦实现JAXP的适当DOM解析器读取了XML文档的内容,并且已经填充了它的内部结构以使您可以使用Document类的实例,就可以调用该方法。换句话说,解析XML文档后,DOM解析器负责为您提供Document对象的实例。
谢谢您提供丰富的解释。 – Peter 2011-06-14 04:45:35
@彼得,不客气。 – 2011-06-14 05:09:58
很少有已知的实现是Xerces和JDom
- 1. 为什么可以调用Java的接口方法的方法? [可比]
- 2. 为什么我们调用Object.clone()方法?
- 3. 为什么我们必须命名接口方法参数?
- 4. 为什么我们要实现接口?
- 5. 为什么我可以在不覆盖它们的情况下使用接口枚举方法?
- 6. 为什么要使用接口,而我们可以使所有方法都是抽象的?
- 7. 为什么我们可以将Java接口转换为* any *非final类?
- 8. 为什么我可以通过Object#send来调用私有方法,但不能直接调用上述方法?
- 9. C++ 11已实现的接口方法不可用。为什么?
- 10. 何时以及为什么我们必须实现Comparable接口?
- 11. 接口 - 为什么使用它们?
- 12. 为什么我们要调用doesNotRecognizeSelector:方法?
- 13. 为什么我们需要System类来调用out.println()方法?
- 14. 我们为什么可以在VB
- 15. 为什么我不能在明确实现接口的类中调用方法?
- 16. 为什么我们不能在广播接收器类中调用StopForeground()方法?
- 17. 为什么Object类方法在接口中可用?
- 18. 为什么我们需要Buffer.isBuffer方法?
- 19. 为什么我们需要addRequestHeader方法?
- 20. 为什么我不能调用方法?
- 21. 我可以使用什么方法从VBA调用Web服务?
- 22. 谁/什么实现我可以直接使用的接口?
- 23. 我们可以用Struts2中的参数调用方法吗?
- 24. 为什么我们使用接口引用一个子对象?
- 25. 我可以采用什么方法调用非.NET风格的本地C++接口?
- 26. 为什么COM接口为相同的调用方法返回不同的值?
- 27. 为什么可以在对象上调用多个方法?
- 28. 为什么可以在C#中指定接口方法的实现?
- 29. 为什么我们在这里使用接口实现?
- 30. 为什么使用抽象如果我们有接口
你能发表一个例子吗? – Colin 2011-06-14 04:10:21