gpt4 book ai didi

java - SAX解析器加载DTD文件

转载 作者:行者123 更新时间:2023-12-01 09:38:55 26 4
gpt4 key购买 nike

我之前使用过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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com