首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用htmlparser2转换html中的内容

如何使用htmlparser2转换html中的内容
EN

Stack Overflow用户
提问于 2021-01-23 10:37:29
回答 1查看 214关注 0票数 0

我需要在nodejs环境中反转html中的"textContent“和"title”文本,该怎么办?

这是我的当前代码,htmlparser2": "^6.0.0

代码语言:javascript
运行
复制
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);

我希望在转换后得到这个结果。

代码语言:javascript
运行
复制
<!DOCTYPE html>
<html>
  <body title="olleh" class="d-flex">
    ydob
    <h1>cba</h1>
    <p>fed</p>
  </body>
</html>

谢谢❤️

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-24 02:45:42

我花了一些时间建造这个图书馆来解决这个问题。html-静态

代码语言:javascript
运行
复制
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());
});

最后我得到了这个结果

代码语言:javascript
运行
复制
<!DOCTYPE html><html><body title="olleh">ydob<h1 id="app">cba</h1><p class="foo">fed</p></body></html>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65858198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档