HTML4J 是一个 Java 解析 HTML 的类库。示例代码:
Reader re = ... // Create the document HTMLDoc doc = new HTMLDoc(); // Load its content doc.load(re); // Get the HTML HTMLFragment html = doc.getHTML(); // Create a 'date' meta-tag HTMLTag tag = HTMLTag.parse("<meta name=\"date\" content=21/01/2001>"); // Insert it just before the title html.insertBefore(html.findTagByName("title"), tag); // Create a paragraph tag = HTMLTag.create("p"); // Insert '<p>Paragraph</p>' just before a tag with id="someid" html.insertBefore(html.getIdFinder("someid").getTag().getPosition(), tag.toString("Paragraph")); // Create an anchor to foo.html HTMLTag anchor = HTMLTag.parse("<a href=\"foo.html\">"); // We could also do a 'HTMLTag.create("a")' and then set the 'href' // attribute using getAttributes().setAttribute("href", "foo.html") // // Now we get a tag block with id="otherid" tag = html.getIdFinder("otherid").getTagBlock(); // Replace the tag that has id="otherid" by the same tag // embraced by the foo.html anchor html.replace(tag.getBlockPosition(), anchor.toString(tag)); // For example, if the 'otherid' tag was 'img src="something.jpg"', // then the result would be: // '<a href="foo.html"><img id="otherid" src="something.jpg"></a>' // tag = html.getTagByName("meta"); // We just got the first 'meta' tag found in the document, and now we // set its name attribute to 'last_update', and its value // (the 'content' attribute) to "20/01/2001" tag.getAttributes().setAttribute("name", "last_update"); tag.getAttributes().setAttribute("content", "20/01/2001"); // Commit the changes to the 'meta' tag to the document html.update(tag);
java有很多解析html的开源包,有htmlparser、cobra、jsoup、html4j、htmlclean等,http://www.open-open.com/30.htm 项目中使用的是cobra,其他的没用过。cobra能解析javascript和css,项目中没有用这两项,也没研究过这块的代码。也是因为支持这些,如果不禁用,会占用相当大的内存,比如每个节点都会含有一个xxxStyl
1,起因 初次配置knife4j 时,发现不能访问doc.html, 问了大佬,大佬也不知道,然后问题一直搁置, 今天有些时间,搜了一下,没想到找到了答案 2,过程 最开始的时候,按照 knife4j 初次使用 的步骤,当时是可以访问doc.html的,但是后面在开发的过程中前端说突然不能访问了, 然后找到两篇文章 https://doc.xiaominfo.com/guide/springboo
CVE-2021-44228,原理上是 log4j-core 代码中的 JNDI 注入漏洞。这个漏洞可以直接导致服务器被入侵,而且由于“日志”场景的特性,攻击数据可以多层传导,甚至可以威胁到纯内网的服务器。log4j 作为 Java 开发的基础公共日志类,使用范围非常广,漏洞必定影响深远,想想当年commons-collections反序列化漏洞的影响范围。 Github漏洞公告: https:/
问题背景 在进行logback的日志输出测试时,显示如下错误 SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/D:/LenovoSoftstore/softdate/Idealp/.m2/repository/org/slf4j/slf4j-log4j12/1.6.1/sl