[英]Including the content of HTML page as String in JSP
这是我的问题。 我需要在 jsp 文件的某个字符串中包含一些 HTML 页面(模板)的内容,所以我可以迭代扔它,解析它,并使用我需要的东西。 怎么能做到这一点,我试图在网上找到解决方案,但我做不到。 有谁知道解决方案可能是什么?
谢谢,
卢卡
如果您想从 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);
}
}
显然,值得注意的是:
我不确定如何理解您的问题,但您可以使用 include 标签包含模板
<jsp:include page="template.html">
这将在 JSP 页面编译并使其成为页面的一部分时读取 html 文件。
如果您尝试读取的文件是本地文件,那么我建议您尝试使用Google Guava 库中的Files.toString() :
Charset charset = Charset.forName("UTF-8");
File file = new File("test.txt");
String res = Files.toString(file, charset);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.