Referring to a local DTD in Java

前端 未结 4 461
借酒劲吻你
借酒劲吻你 2021-01-04 20:15

I have some XML that I\'m parsing with a SAX parser in Java. It starts with this preamble:



        
相关标签:
4条回答
  • 2021-01-04 20:39

    When dealing with Web Apps, you can put the dtd in the lib folder and refer to it like:

    <!DOCTYPE name PUBLIC 
        "-//CMP//DTD dtdName 1.0//EN"
            "/WEB-INF/lib/dtdName.dtd">
    
    0 讨论(0)
  • 2021-01-04 20:51

    The solution is to provide the DTD file location in the system using classpath. So the DocType that worked offline would be:

    <!DOCTYPE hibernate-configuration SYSTEM 
        "classpath://org/hibernate/hibernate-configuration-3.0.dtd">
    
    0 讨论(0)
  • 2021-01-04 20:52

    Take a look at this article on using XML catalogs to resolve DTDs locally without having to modify your XML source. The basic steps are:

    1. create an XML file that maps system IDs to local DTDs
    2. modify your code to instantiate and configure a CatalogResolver
    3. provide the CatalogResolver to the XML Reader (obtained from the parser)
    0 讨论(0)
  • 2021-01-04 21:04

    Also another way can be to keep the dtd at the localhost so that the final path becomes something like:

    <!DOCTYPE hibernate-configuration SYSTEM 
              "http://localhost/hibernate-configuration-3.0.dtd">
    

    Definitely not the most elegant solution but surely does work.

    0 讨论(0)
提交回复
热议问题