在我的作业中,我应该解析一些sgml
个文件。我使用SAXParser
。它适用于简单的xml
文件。但是,当我想解析作业sgml
文件时,会发生以下错误:
Exception in thread "main" org.xml.sax.SAXParseException; systemId: file:///C:/Users/MarkaZ%20Computer%20RooZ/Documents/workspace/HW_02_IR/lewis.dtd; lineNumber: 2; columnNumber: 17; A '(' character or an element type is required in the declaration of element type "LEWIS".
我对dtd
文件没有任何了解。我的代码是:
SAXParserFactory parserFactor = SAXParserFactory.newInstance();
SAXParser parser = parserFactor.newSAXParser();
SAXHandler handler = new SAXHandler();
parser.parse(new FileInputStream("reut2-000.sgm"), handler);
如何防止此错误?
请原谅我的英语不好
答案 0 :(得分:3)
如果要解析XML,请使用XML解析器。如果要解析SGML,请使用SGML解析器(例如,James Clark的SP)。尝试使用XML解析器解析SGML就像尝试使用C#编译器编译Java一样 - 它不会起作用。
答案 1 :(得分:1)
您的xml或dtd格式错误 - 请参阅错误消息的结尾:
... A'('字符或元素类型在元素类型“LEWIS”的声明中是必需的。
错误提及lewis.dtd
- 也许这就是故障所在。
你有一些选择:
答案 2 :(得分:0)
您可以使用XMLSPY类工具来验证您的SGML与给定的xsd或dtd,如果有任何错误,它将以红色显示,然后您可以手动更正它。
纠正后,您可以继续使用SAX进行解析。