JAVA 中的 SGML 解析器?[已关闭]

2022-09-02 10:54:19

我正在寻找一个Java中的解析器,可以解析以SGML格式化的文档。

对于重复的监视器:我知道讨论此主题的另外两个线程:使用SGML解析Java String到XML的XML转换?但两者都没有解决方案,因此是新的话题。

对于将XML与SGML混淆的人:请阅读以下内容:http://www.w3.org/TR/NOTE-sgml-xml-971215#null(简而言之,有足够的细微差异,至少使其在香草形式中不可用)

对于那些喜欢让海报去谷歌搜索的人来说:我已经做到了,我能想到的最接近的是广受欢迎的SAXParser:http://download.oracle.com/javase/1.4.2/docs/api/javax/xml/parsers/SAXParser.html 但这当然是一个XML解析器。我正在环顾四周,看看是否有人实现了对SAX解析器的修改以适应SGML。

最后,我不能使用SX,因为我正在寻找Java解决方案。

谢谢!:)


答案 1

我有几种方法来解决这个问题

第一个是你做了什么 - 检查sgml文档是否足够接近XML,以便标准SAX解析器工作。

第二种是对HTML解析器执行相同的操作。这里的诀窍是找到一个不忽略非HTML元素的元素。

在搜索“sgml parser Java”时,我确实发现了一些Java SGML解析器,更多的是acedemia。我不知道它们有多好。

最后一步是采用标准(非Java)SGML解析器,并将文档转换为可以在Java中读取的内容。

看起来你能够完成第一步。


答案 2

我通过JNI使用OpenSP,因为似乎没有纯粹的Java SGML解析器。我已经写了一个实验性的类似SAX的包装器,可以在 http://sourceforge.net/projects/sasgml(当然,它具有JNI的所有缺点......但足以满足我的要求)。

另一种方法是使用 Open SP 中的 sx 将文档转换为 XML,然后运行传统的 SAX 分析器。


推荐