java - SAX解析器加载DTD文件

标签 java parsing xml-parsing sax

我之前使用过DOM解析器,将DTD文件放在项目下,DOM代码可以检测DTD文件本身并根据规则解析文件。 当我转移到SAX解析器时,似乎SAX解析器无法在不设置的情况下检测到DTD文件本身。有一些帖子提到使用resolveEntity(),但我不太理解。谁能帮我解决这个问题,以一种简单的方式(在没有CMD的eclipse中)将本地DTD文件加载到我的java代码中?

如果有人能给出代码示例,那就最好了。

最佳答案

我正在发布一个有效的解决方案,并且我已经从 SAX 文档中获取了输入。我已经使用了来自 W3 Schools 的示例 DTD 和 XML(http://www.w3schools.com/xml/xml_dtd.asp),如果 DOCTYPE 位于单独的文件中,则不需要 DOCTYPE,因此从 DTD 中删除了这一行。不确定这是否是您想要的示例,希望它能有所帮助!

public static void main(String[] args) {
        try {
            SAXParserFactory factory = SAXParserFactory.newInstance();
            factory.setNamespaceAware(true);
            factory.setValidating(true);

            XMLReader reader = factory.newSAXParser().getXMLReader();
            reader.parse(new InputSource(new FileInputStream("C:\\DevelopmentTools\\3.CODE\\SAX-XML.txt")));
            reader.setEntityResolver(new EntityResolver() {

                @Override
                public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException {
                    // TODO Auto-generated method stub
                    if (systemId == null) {
                        systemId = "C:\\DevelopmentTools\\3.CODE\\99.WORKSPACE\\Note.dtd";
                    }
                    InputSource result = null;
                    result = new InputSource(systemId);
                    return result;
                }
            });

        } catch (ParserConfigurationException e) {
            e.printStackTrace();
        } catch (SAXException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

关于java - SAX解析器加载DTD文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38607236/

相关文章:

php - 寻找一种使用 php 解析 XML 字符串并将其插入 MySQL 的方法

java - 在 Java 7 下运行的 tomcat 上使用 Java 6 字节码查询 Web 应用程序

java - Hibernate引入二级缓存如何解决N+1问题?

java - 如何创建终端/控制台

c - 非常简单的纯 C 非负整数解析器的非常奇怪的行为

java - 安卓 :Parse XML Data: Tags with arguments

java - 在 arquillian 部署之前运行代码

javascript - 如何使用 JavaScript 检测文档中是否存在 HTML5 有效文档类型?

python - 使用biopython解析fasta文件来计算属于每个ID的序列读取数

java - 使用 Groovy 从 XML 中删除所有空节点