關於SAXParser載入dtd報錯問題解析

2021-06-02 17:10:19 字數 866 閱讀 4183

如果使用saxparser進行對xml的解析,不管對saxparse***ctory工廠的setinvidating設定為false,saxparser在載入xml的時候,總會對xml中的dtd進行驗證,如果dtd檔案的路徑是絕對的,那麼一般沒有什麼問題,如果使用的路徑是相對的,那麼,就很容易發生dtd路徑找不到的錯誤,到時整個xml不能進行正常載入解析,遇到這個情況,需要告訴解析器saxparser這個dtd相對的路徑哪個,一般把dtd檔案和xml檔案放在同乙個資料夾,這樣解決起來就方便多了,只要告訴saxparser解析器dtd相對的路徑是自己的xml檔案就行如下**:

saxparser parser = factory.newsaxparser();

inputstream is = this.getclassloader().getresourceasstream(xmlpath);

url url = this.getclassloader().getresource(xmlpath);

file file = new file(url.getpath());

parser.parser(is,new defaulthandler(),file.getabusolutepath());

說明:以上**可能會有寫錯的,沒有在開發工具上寫,是在這裡臨時敲出來的。

也許大家會迷惑,為什麼獲得xmlpath的時候,要用url進行轉換,這是因為xmlpath如果是用相對路徑的話,不這麼處理就很麻煩,特別是應用程式,它們檔案的相對位置不一樣,如果這樣處理的話,就知道我們的檔案都死相對於我們應用程式的類載入器的位置,比如我們應用程式的classpath位置。

按照以上**書寫以後,在parser.parser()的時候,就不會報錯了。

關於類載入

本文不做概念和理論解釋 直接上 假設現有jar包foo 1.0.0.jar package com.oliver.entity public class a 此處省略n個方法 public object 假設現有jar包bar 1.0.0.jar public class b 此處省略n個方法 pu...

mysql 資料載入 關於mysql載入資料的幫助

我要載入如下所示的csv檔案 acct.no.1 15 days,16 30 days,31 60 days,61 90 days,91 120 days,beyond 120 days 2314134101,898.89,8372.16,5584.23,7744.41,9846.54,2896.2...

關於樣式載入順序,js載入順序

對於大型 樣式表,js檔案有多個,這時載入順序有講究 以京東為例 對於js 先載入全域性配置,然後載入當前頁面配置 先載入base v1.js,再載入當前頁面配置 window.pageconfig 為啥要把pageconfig定義為乙個屬性,而不是單獨定義乙個變數,因為如果用乙個未定義的屬性時會i...