我需要在nodejs环境中反转html中的"textContent“和"title”文本,该怎么办?
这是我的当前代码,htmlparser2": "^6.0.0
import * as htmlparser2 from "htmlparser2";
let data = `
<!DOCTYPE html>
<html>
<body title="hello" class="d-flex">
body
<h1>abc</h1>
<p>def</p>
</body>
</html>
`;
const reverse = (str: string) => str.split("").reverse().join("");
var handler = new htmlparser2.DomHandler(function (error, tree) {
//...
});
var parser = new htmlparser2.Parser(handler);
parser.parseComplete(data);
我希望在转换后得到这个结果。
<!DOCTYPE html>
<html>
<body title="olleh" class="d-flex">
ydob
<h1>cba</h1>
<p>fed</p>
</body>
</html>
谢谢❤️
发布于 2021-01-24 02:45:42
我花了一些时间建造这个图书馆来解决这个问题。html-静态
import { AstAttrbute, AstText, htmlAst, traverse } from "html-static";
let data = `
<!DOCTYPE html>
<html>
<body title="hello">
body
<h1 id="app">abc</h1>
<p class='foo'>def</p>
</body>
</html>
`;
const ast = htmlAst(data);
const reverse = (str) => str.split("").reverse().join("");
traverse(ast, {
text(text: AstText) {
text.value = reverse(text.value);
},
attr_title(attr: AstAttrbute) {
attr.value = reverse(attr.value);
},
}).then((_) => {
console.log(ast.toString());
});
最后我得到了这个结果
<!DOCTYPE html><html><body title="olleh">ydob<h1 id="app">cba</h1><p class="foo">fed</p></body></html>
https://stackoverflow.com/questions/65858198
复制相似问题