您的位置:首页 > Web前端 > HTML

html工具类

2019-08-28 21:01 1251 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/qq_42174623/article/details/100126769

实现的功能就是将提交的HTML文件处理成可以用富文本编辑器进行在线编辑

package com.delin.contract.coder.coderUtil;

import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.CharsetUtil;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.Text;
import org.dom4j.io.SAXReader;
import org.dom4j.tree.DefaultText;

import java.io.File;
import java.util.HashMap;
import java.util.Map;

public class getHtmlCharacter {
public static Map<String,String> HtmlCharacter(File file){
Map<String,String> result=new HashMap();
// 读取html字符串
String htmlStr = FileUtil.readString(file, CharsetUtil.defaultCharsetName());

// 处理非法标签及特殊字符
htmlStr = htmlStr.replaceAll("<META([\\s\\S]*?)>", "");
htmlStr = htmlStr.replaceAll("<meta([\\s\\S]*?)>", "");

htmlStr = htmlStr.replaceAll("&ldquo;", "“");
htmlStr = htmlStr.replaceAll("&rdquo;", "”");
htmlStr = htmlStr.replaceAll("&radic;", "√");
FileUtil.writeString(htmlStr, file,CharsetUtil.defaultCharsetName());

try {

// 获取文档sax解析器,读取流获取document对象
SAXReader reader = new SAXReader();
org.dom4j.Document doc = reader.read(file);

// 获取html标签
Element htmlNode = doc.getRootElement();

// 获取body标签并递归处理子标签
Element bodyNode = htmlNode.element("body");
treeWalk(bodyNode);

// 分别获取 style 和 body 内容
Element style = htmlNode.element("head").element("style");
Element body = htmlNode.element("body");

String bodyStr = body.asXML();
bodyStr = bodyStr.replaceAll("nbsp;", "&nbsp;");
bodyStr = bodyStr.replaceAll("\r|\n", "");

result.put("style", style.asXML());
result.put("body", bodyStr);

} catch (DocumentException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}

return result;
}

public static void treeWalk(Element element) {

for (int i = 0, size = element.nodeCount(); i < size; i++) {

Node node = element.node(i);

if (node instanceof Element) {

Element nodeElement = (Element) node;

int count = nodeElement.nodeCount();
if(count == 0){
String name = nodeElement.getName();
if("p".equals(name)){
nodeElement.add(new DefaultText("nbsp;"));
}
}

treeWalk(nodeElement);

} else if(node instanceof Text){

Text textNode = (Text)node;

String text = textNode.getText();
textNode.setText(text.replaceAll(" ", "nbsp;"));

}
}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: