1

我需要解析静态 JSP/HTML 页面以在批处理模式下识别标签和标签。

程序将运行并读取给定 WAR 或文件夹中的视图文件并对其进行解析。由于它不在运行时 DOM 将不可用。

所以需要一些指示可以使用 XPath 完成吗

4

1 回答 1

3

XPath 旨在仅用于 XML 文档。

因此,您必须寻找能够将 JSP/HTML 解析为 XML 文档的解析器。如果您使用的是 JSPX 而不是 JSP,那么您只需为此使用 Java SE 的内置 JAXP。

InputStream input = getInputStreamOfJspOrHtml();
Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(input);
// ...

但是,如果您使用的是旧版 JSP,可能充满了scriptlet和/或格式不正确的 HTML(例如使用<br>而不是<br/>),它们根本不会验证为 XML,那么您最好的选择是使用宽松的 HTML 解析器这是对无效语法的宽容,例如JTidy

InputStream input = getInputStreamOfJspOrHtml();
Document document = new Tidy().parseDOM(input, null);
// ...

无论哪种方式,一旦org.w3c.dom.Document您掌握了 a,您就可以按照通常的方式在其上运行 XPath。

于 2012-10-30T15:09:03.713 回答