这是我的问题。我需要在jsp文件中的某些字符串中包含一些HTML页面(模板)的内容,所以我可以迭代扔掉它,解析它,并使用我需要的东西。怎么可能做到这一点,我试图在网上找到解决方案,但我不能。有谁知道解决方案可能是什么?
谢谢,
卢卡
答案 0 :(得分:0)
如果您正在寻找从Web上读取HTML页面并解析它以获取某些数据,那么以下代码可能对您有所帮助(我在之前的项目中使用的快速和脏代码)
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.List;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
import org.w3c.dom.NodeList;
import org.w3c.tidy.Tidy;
public List<String> getTopics() {
try {
URL url = new URL(TOPIC_URL);
URLConnection urlc = url.openConnection();
java.io.InputStream is = urlc.getInputStream();
Tidy tidy = new Tidy();
tidy.setDocType("HTML 4.01 Transitional");
tidy.setQuiet(true);
org.w3c.dom.Document doc = tidy.parseDOM(is, null);
XPathFactory factory=XPathFactory.newInstance();
XPath xPath=factory.newXPath();
XPathExpression xPathExpression= xPath.compile("//td[@class='topics']//table[@class='topic']/tr/td/a/text()");
NodeList nodes = (NodeList) xPathExpression.evaluate(doc, XPathConstants.NODESET);
logger.debug("Found " + nodes.getLength() + " nodes");
List<String> result = new ArrayList<String>();
for (int i=0; i<nodes.getLength();i++){
result.add(nodes.item(i).getNodeValue());
}
logger.debug("Topics: " + result);
return result;
} catch(MalformedURLException ex) {
logger.info(ex.getClass() + ":" + ex.getMessage());
throw new RuntimeException(ex);
} catch(XPathExpressionException ex) {
logger.info(ex.getClass() + ":" + ex.getMessage());
throw new RuntimeException(ex);
} catch(IOException ex) {
logger.info(ex.getClass() + ":" + ex.getMessage());
throw new RuntimeException(ex);
}
}
显然,值得注意的是:
答案 1 :(得分:0)
我不确定如何理解您的问题,但您可以使用include标记
添加模板<jsp:include page="template.html">
这将在编译JSP页面时读取html文件并使其成为页面的一部分。
答案 2 :(得分:0)
如果您尝试阅读的文件是本地文件,那么我建议您从Files.toString()尝试Google Guava library:
Charset charset = Charset.forName("UTF-8");
File file = new File("test.txt");
String res = Files.toString(file, charset);