参考Java中的本地DTD

Pau*_*ers 9 java xml dtd sax

我有一些XML,我正在使用Java中的SAX解析器进行解析.它从这个序言开始:

<!DOCTYPE math 
    PUBLIC "-//W3C//DTD MathML 3.0//EN"
           "http://www.w3.org/Math/DTD/mathml3/mathml3.dtd">
Run Code Online (Sandbox Code Playgroud)

如何更改此设置以使用本地DTD?

我想我可以这样做:

<!DOCTYPE math 
    PUBLIC "-//W3C//DTD MathML 3.0//EN"
           "file:///c:/MathML/mathml3.dtd">
Run Code Online (Sandbox Code Playgroud)

不是那样的,但是那样的东西.但是,我需要路径独立于用户的系统.

如何使用具有相对于类路径的路径的本地DTD?

Hit*_*eeb 5

在处理Web Apps时,可以将dtd放在lib文件夹中,并像这样引用它:

<!DOCTYPE name PUBLIC 
    "-//CMP//DTD dtdName 1.0//EN"
        "/WEB-INF/lib/dtdName.dtd">
Run Code Online (Sandbox Code Playgroud)


Jim*_*son 4

查看这篇关于使用 XML 目录在本地解析 DTD 的文章,而无需修改 XML 源。基本步骤是:

  1. 创建将系统 ID 映射到本地 DTD 的 XML 文件
  2. 修改代码以实例化和配置 CatalogResolver
  3. 向 XML Reader 提供 CatalogResolver(从解析器获得)