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"的方式進行跟蹤