sun和ibm都有一套xml的實現,sun的實現是打到jdk里面了。
但當加載的時候,如果ibm的實現jar包xercesImpl.jar的接口 xml-apis.jar [j2ee1.4 library 有]文件導入到classpath 里了的話:
1 如果xml-apis.jar先于 jre加載,那么 將采用 xercesImpl.jar的實現;
2 如果jre先加載,那么將用 sun的xml實現,而取這個實現的類又分別按順序從4個位置取.
- 使用
javax.xml.parsers.DocumentBuilderFactory
系統屬性。
- 使用 JRE 文件夾中的屬性文件 "lib/jaxp.properties"。此配置文件格式為標準的
java.util.Properties
且包含實現類的完全限定名,其中實現類的鍵是上述定義的系統屬性。 JAXP 實現只讀取一次 jaxp.properties 文件,然后緩存其值供以后使用。如果首次嘗試讀取文件時,文件不存在,則不會再次嘗試檢查該文件是否存在。首次讀取 jaxp.properties 后,其中的屬性值不能再更改。
- 如果可以,使用 Services API(在 JAR 規范中進行了詳細描述)來確定類名稱。Services API 將查找在運行時可用的 jar 中
META-INF/services/javax.xml.parsers.DocumentBuilderFactory
文件中的類名。
- 平臺默認的
DocumentBuilderFactory
實例。
這些過程,自己可以通過加vm參數 "-verbose"的方式進行跟蹤