Java 将HTML解析器与SGML结合使用

Java 将HTML解析器与SGML结合使用,java,html,xml,html-parsing,sgml,Java,Html,Xml,Html Parsing,Sgml,我想将XML解析器与SGML文档一起使用,但是这不起作用。在阅读了一些建议之后,似乎唯一的解决方法就是使用HTML解析器。所以我基本上只是想做一个简单的查询,从我的文档中提取故事标题。(如果我解析空值,它会工作-打印整个文档,只是我不确定如何访问特定的标记,例如title) SGML文件的开始: <head> <meta words=61 rate=180> <formname>Testing</formname> <storyid>1

我想将
XML
解析器与
SGML
文档一起使用,但是这不起作用。在阅读了一些建议之后,似乎唯一的解决方法就是使用
HTML
解析器。所以我基本上只是想做一个简单的查询,从我的文档中提取故事标题。(如果我解析空值,它会工作-打印整个文档,只是我不确定如何访问特定的标记,例如title)

SGML文件的开始:

<head>
<meta words=61 rate=180>
<formname>Testing</formname>
<storyid>1234</storyid>
</head>
<story>
<fields>
<f id=title>Sports</f>
<f id=modify-by>Tester</f>
<f id=modify-date>315576000</f>
</fields>
<body>

测试
1234
体育
测试员
315576000

从您的示例来看,您的内容模型似乎非常简单。在这种情况下,您可以实现一个简单的即席解析

如果您非常确定没有使用标记的节(不仅是因为CDATA节,而且还因为可以在参数实体中提供status关键字,这将使一切更加复杂),并且没有使用SGML的深奥功能(例如DATATAG),您可以删除任何注释,然后扫描以下模式:

(?i)<f\s+id\s*=\s*["']?title["']?\s*>

(?i)XML和HTML都与SGML相关,但它们都不兼容。为什么不使用SGML解析器呢?我之前读过这篇文章,对于如何使用SGML解析器没有明确的答案,如果你能推荐一个,那就太好了。所有的建议似乎都指向了HTML解析器。顺便说一句,我尝试了SAX解析器,但失败了
(?i)<f\s+id\s*=\s*["']?title["']?\s*>