XPath可用于解析静态HTML / JSP页面

时间:2012-10-30 13:28:23

标签: html parsing jsp xpath

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

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

因此需要一些指示,可以使用XPath

完成

1 个答案:

答案 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。