[英]Does a java SAX parser actually retrieve the DTD from the internet?
使用聲明DOCTYPE的XML文件,以struts.xml文件為例:
Java SAX處理實際上是從提供的URL獲取dtd嗎?
許多(大多數)實現,即使在技術上,如果我沒記錯的話,該位置應該被解釋為URI,而不是URL。
如果您想確保在本地解析它,請查看EntityResolver接口。
根據Xerces文檔 ,解析器可能會在啟用驗證時嘗試從Internet下載文件。 但我真的認為這可以從解析器更改為解析器,因為庫可能決定使用本地緩存,代理服務器或其他任何東西。
您可以修改struts.xml以從類路徑加載來自struts2核心jar的DTD文件,而不是從Internet加載它
從
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts
Configuration//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
改成
<!DOCTYPE struts SYSTEM "struts-2.0.dtd">
現在,sax解析器從我放置的/ src文件夾中加載了struts-2.0.dtd文件。
這也是我修改過的hibernate配置文件,它的工作方式略有不同。 它直接從JAR加載dtd文件,不必將它物理地放在src文件夾中
<!DOCTYPE hibernate-configuration SYSTEM "classpath://org/hibernate/hibernate-configuration-3.0.dtd">
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.