簡體   English   中英

java SAX解析器是否實際從Internet上檢索DTD?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM