参考Java中的本地DTD

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

 

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

我想我可以这样做:

  

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

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

查看本文,了解如何使用XML目录在本地解析DTD,而无需修改XML源代码。 基本步骤是:

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

处理Web Apps时,您可以将dtd放在lib文件夹中,并将其引用为:

  

解决方案是使用类路径在系统中提供DTD文件位置。 因此脱机工作的DocType将是:

  

您可以使用相对路径,例如:

  

这将与您运行Java程序的目录相关,并且根据您使用的解析器,它可能与您正在解析的xml的目录相关。

另一种方法是将dtd保持在localhost,以便最终路径变为:

  

绝对不是最优雅的解决方案,但肯定会起作用。