我有一些XML,我正在使用Java中的SAX解析器进行解析。它从这个序言开始:
<!DOCTYPE math
PUBLIC "-//W3C//DTD MathML 3.0//EN"
"http://www.w3.org/Math/DTD/mathml3/mathml3.dtd">
如何更改此设置以使用本地DTD?
我想我可以这样做:
<!DOCTYPE math
PUBLIC "-//W3C//DTD MathML 3.0//EN"
"file:///c:/MathML/mathml3.dtd">
不完全那样,但某事就像那样。但是,我需要路径独立于用户的系统。
如何使用具有相对于类路径的路径的本地DTD?
答案 0 :(得分:4)
使用XML目录查看this article以在本地解析DTD,而无需修改XML源。基本步骤是:
答案 1 :(得分:4)
在处理Web Apps时,您可以将dtd放在lib文件夹中,并将其引用为:
<!DOCTYPE name PUBLIC
"-//CMP//DTD dtdName 1.0//EN"
"/WEB-INF/lib/dtdName.dtd">
答案 2 :(得分:3)
解决方案是使用classpath在系统中提供DTD文件位置。因此离线工作的DocType将是:
<!DOCTYPE hibernate-configuration SYSTEM
"classpath://org/hibernate/hibernate-configuration-3.0.dtd">
答案 3 :(得分:0)
另一种方法可以是将dtd保留在localhost中,以便最终路径变为:
<!DOCTYPE hibernate-configuration SYSTEM
"http://localhost/hibernate-configuration-3.0.dtd">
绝对不是最优雅的解决方案,但确实有效。