【问题标题】:sgml parsing with sax parser使用 sax 解析器解析 sgml
【发布时间】:2015-04-17 09:52:36
【问题描述】:

在我的作业中,我应该解析一些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".

我对@9​​87654327@ 文档一无所知。我的代码是:

 SAXParserFactory parserFactor = SAXParserFactory.newInstance();
            SAXParser parser = parserFactor.newSAXParser();
            SAXHandler handler = new SAXHandler();


parser.parse(new FileInputStream("reut2-000.sgm"), handler);

我怎样才能防止这个错误?

请原谅我的英语不好

【问题讨论】:

  • 向我们展示有效的 XML 和失败的 SGML 怎么样?
  • @JanDoggen 我正在使用本教程:javacodegeeks.com/2013/05/…。它适用于教程中的示例 xml。

标签: java xml saxparser sgml


【解决方案1】:

如果要解析 XML,请使用 XML 解析器。如果要解析 SGML,请使用 SGML 解析器(例如,James Clark 的 SP)。尝试使用 XML 解析器解析 SGML 就像尝试使用 C# 编译器编译 Java - 它不会工作。

【讨论】:

    【解决方案2】:

    您的 xml 或 dtd 格式错误 - 请参阅错误消息的结尾:

    ...在元素类型“LEWIS”的声明中需要一个'('字符或元素类型。

    错误中提到了lewis.dtd - 也许这就是错误所在。

    你有一些选择:

    1. 修复您的 dtd。
    2. 手动编辑 xml 文件,使其格式正确。
    3. 在将 xml 文件传递​​给解析器之前对其进行过滤 - 即时对其进行编辑以使其格式正确。
    4. 使用能够容忍格式错误的 xml 的其他解析器。

    【讨论】:

    • 谢谢。我认为问题出在lewis.dtd。但我对 dtd 文件一无所知
    • @HamidrezaSamadi - 您肯定可以在 dtd 中找到 lineNumber: 2; columnNumber: 17; 并查看 LEWIS 类型的声明?有many 的例子。
    【解决方案3】:

    您可以使用 XMLSPY 类型的工具来根据给定的 xsd 或 dtd 验证您的 SGML,如果有任何错误,它将以红色显示,然后您可以手动更正它。

    修正后,您可以继续使用 SAX 对其进行解析。

    【讨论】:

      猜你喜欢
      • 2012-08-27
      • 1970-01-01
      • 2011-04-30
      • 2011-06-17
      • 2011-08-14
      • 1970-01-01
      • 2011-05-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多