gpt4 book ai didi

java - JSoup 似乎忽略了字符代码?

转载 作者:太空宇宙 更新时间:2023-11-04 16:09:07 25 4
gpt4 key购买 nike

我正在用 Java 构建一个类似于 CMS 的小型应用程序,它采用带有衬衫名称/描述的 .txt 文件,并将名称/描述加载到 customShirts 的 ArrayList(我制作的小类)中。然后,它遍历 ArrayList,并使用 JSoup 解析模板 (template.html) 并将衬衫的独特细节插入到 HTML 中。最后,它将每件衬衫抽出到输出文件夹中自己的 HTML 文件中。

当描述加载到 customShirts 的 ArrayList 时,我将所有特殊字符替换为适当的字符代码,以便它们可以正确显示(例如,将撇号替换为 ')。问题是,我注意到 JSoup 似乎会自动将字符代码转换为实际字符,这是一个问题,因为我需要输出可显示(这需要字符代码)。我能做些什么来解决这个问题吗?我查看了其他解决方法,例如:Jsoup unescapes special characters ,但他们似乎需要在使用 replaceAll 插入之前解析文件,而我使用 JSoup 插入字符代码敏感文本,这似乎并没有使它成为一个选项。

下面是我制作的 HTML 生成器的代码:

public void generateShirtHTML(){

for(int i = 0; i < arrShirts.size(); i++){

File input = new File("html/template/template.html");
Document doc = null;
try {
doc = Jsoup.parse(input, "UTF-8", "");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

Element title = doc.select("title").first();
title.append(arrShirts.get(i).nameToCapitalized());

Element headingTitle = doc.select("h1#headingTitle").first();
headingTitle.html(arrShirts.get(i).nameToCapitalized());

Element shirtDisplay = doc.select("p#alt1").first();
shirtDisplay.html(arrShirts.get(i).name);

Element descriptionBox = doc.select("div#descriptionbox p").first();
descriptionBox.html(arrShirts.get(i).desc);
System.out.println(arrShirts.get(i).desc);

PrintWriter output;
try {
output = new PrintWriter("html/output/" + arrShirts.get(i).URL);
output.println(doc.outerHtml());
//System.out.println(doc.outerHtml());
output.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

System.out.println("Shirt " + i + " HTML generated!");

}

}

提前致谢!

最佳答案

扩展一下我的评论(因为斯蒂芬鼓励我..),你可以使用

doc.outputSettings().escapeMode(Entities.EscapeMode.extended);

告诉 Jsoup 转义/编码输出中的特殊字符,例如。左双引号 () 作为 。要使 Jsoup 对所有 特殊字符进行编码,您可能还需要添加

doc.outputSettings().charset("ASCII");

为了保证所有的Unicode特殊字符都会被HTML编码。

对于必须将数据填充到 HTML 文件中的大型项目,您可以考虑使用模板引擎,例如 Thymeleaf - 它更容易用于这种工作(更少的代码等),并且它提供了更多专门用于此过程的功能。对于小型项目(如您的项目),Jsoup 非常好(我过去就是这样使用的),但对于更大(甚至更小)的项目,您需要研究一些更专业的工具。

关于java - JSoup 似乎忽略了字符代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35927566/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com