我需要解析静态 JSP/HTML 页面以在批处理模式下识别标签和标签。
程序将运行并读取给定 WAR 或文件夹中的视图文件并对其进行解析。由于它不在运行时 DOM 将不可用。
所以需要一些指示可以使用 XPath 完成吗
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。