我需要解析静态JSP / HTML页面以批处理模式识别标签和标签。
程序将运行并读取给定WAR或文件夹中的视图文件并解析它。由于它不在运行时DOM将无法使用。
因此需要一些指示,可以使用XPath
完成答案 0 :(得分: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
,那么你可以按常规方式运行XPath。