我沒有看到任何類實現接口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. 我們可以從c#中的Windows窗體調用接口方法嗎?
- 6. 爲什麼我們需要IAudioRenderClient接口
- 7. 爲什麼我們要實現接口?
- 8. 爲什麼可以用另一種方法調用方法?
- 9. 爲什麼我可以在不覆蓋它們的情況下使用接口枚舉方法?
- 10. 爲什麼要使用接口,而我們可以使所有方法都是抽象的?
- 11. 如果我們直接調用run方法會發生什麼?
- 12. 爲什麼我們可以將Java接口轉換爲* any *非final類?
- 13. 爲什麼我可以通過Object#send來調用私有方法,但不能直接調用上述方法?
- 14. 爲什麼我可以通過一個沒有定義它們的接口來訪問Object的方法?
- 15. 爲什麼我們可以用telnet連接http或memcached?
- 16. 爲什麼我們可以直接使用遊標?
- 17. C++ 11已實現的接口方法不可用。爲什麼?
- 18. 什麼替代方法,我們可以用於在android通知?
- 19. 爲什麼我的窗口:willPositionSheet:usingRect:委託方法未被調用?
- 20. 爲什麼我們可以使用'this'作爲實例方法參數?
- 21. 何時以及爲什麼我們必須實現Comparable接口?
- 22. 爲什麼我們可以與IDM
- 23. 我們爲什麼可以在VB
- 24. 接口 - 爲什麼使用它們?
- 25. 爲什麼我們需要System類來調用out.println()方法?
- 26. 爲什麼我們要調用doesNotRecognizeSelector:方法?
- 27. 爲什麼我們需要接口Java 8中的靜態方法?
- 28. 爲什麼我不能在明確實現接口的類中調用方法?
- 29. 當我們不使用方法隱藏時,爲什麼不調用父方法?
- 30. 爲什麼我們不能在廣播接收器類中調用StopForeground()方法?
你能發表一個例子嗎? – Colin 2011-06-14 04:10:21