这里是我的问题。我需要在jsp文件的某个字符串中包含一些HTML页面(模板)的内容,所以我可以迭代抛出它,解析它,然后使用我需要的东西。怎么能做到这一点,我试图在网上找到解决方案,但我不能。有谁知道解决方案可能是什么?在JSP中包含HTML页面的内容为String
感谢,
卢卡
这里是我的问题。我需要在jsp文件的某个字符串中包含一些HTML页面(模板)的内容,所以我可以迭代抛出它,解析它,然后使用我需要的东西。怎么能做到这一点,我试图在网上找到解决方案,但我不能。有谁知道解决方案可能是什么?在JSP中包含HTML页面的内容为String
感谢,
卢卡
如果您想从网络读取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);
}
}
显然,这是值得注意的:
我不知道如何理解你的问题,但你可以包括一个模板我们包含标记
<jsp:include page="template.html">
当JSP页面被编译并使其成为页面的一部分时,这将读取html文件。
是的,我知道,但止跌”吨做到这一点,因为要提取每个标签... – Luka
你的问题是非常不清楚的。你的目标是什么? –
我知道他打算做什么:他可能希望以字符串形式读取html文件,然后进行一些字符串操作,然后out.print操纵结果。 –
如果文件,您尝试读取是本地文件,那么我建议尝试Files.toString()从Google Guava library:
Charset charset = Charset.forName("UTF-8");
File file = new File("test.txt");
String res = Files.toString(file, charset);
谢谢,也许这样做,我会尝试,我只是专注于JSP和包括指令,同时忘记基本知识:) – Luka
我做了这个工作: – Luka
我做了这个工作: <% String file = application.getRealPath(“/”)+“test.txt”; File fileObject = new File(file); char data [] = new char [(int)fileObject.length()]; FileReader filereader = new FileReader(file); int charsread = filereader.read(data); (new String(data,0,charsread)); filereader.close(); %> 它工作得很好,不过谢谢你们;) – Luka
谢谢,但我需要从本地文件 – Luka