gpt4 book ai didi

html - 如何将 HTML 标记流重写为新文档?

转载 作者:行者123 更新时间:2023-11-28 03:48:23 24 4
gpt4 key购买 nike

假设我有一个已标记化的 HTML 文档,我该如何将其转换为新文档或应用其他一些转换?

例如,假设我有这个 HTML:

<html>
<body>
<p><a href="/foo">text</a></p>
<p>Hello <span class="green">world</span></p>
</body>
</html>

我目前编写的是一个输出 token 流的分词器。对于本文档,它们将是(用伪代码编写):

TAG_OPEN[html] TAG_OPEN[body] TAG_OPEN[p] TAG_OPEN[a] TAG_ATTRIBUTE[href]
TAG_ATTRIBUTE_VALUE[/foo] TEXT[text] TAG_CLOSE[a] TAG_CLOSE[p]
TAG_OPEN[p] TEXT[Hello] TAG_OPEN[span] TAG_ATTRIBUTE[class]
TAG_ATTRIBUTE_VALUE[green] TEXT[world] TAG_CLOSE[span] TAG_CLOSE[p]
TAG_CLOSE[body] TAG_CLOSE[html]

但现在我不知道如何使用这个流来创建一些转换。

例如,我想将 TAG_OPEN[a] TAG_ATTRIBUTE[href] 中的 TAG_ATTRIBUTE_VALUE[/foo] 重写为其他内容。

我想做的另一个转换是让它在括号中的 TAG_OPEN[a] 之后输出 TAG_ATTRIBUTE[href] 属性,例如,

<a href="/foo">text</a>

被重写为

<a href="/foo">text</a>(/foo)

进行此类转换的一般策略是什么?还有很多我想做的其他转换,比如剥离所有标签并只留下 TEXT 内容,在某些特定标签之后添加标签等。

我需要创建解析树吗?我从来没有这样做过,也不知道如何从标记流中创建解析树。或者我可以用其他方式做到这一点吗?

欢迎提出任何建议。

还有一件事 - 我想自己学习所有这些解析,所以我不是在寻找图书馆!

预先感谢博达赛多

最佳答案

如果我们可以假设 html 是 xml 兼容的,那么 xslt 将是一种可行的方法。但我假设你似乎想要编写自己的解析器(不知道为什么)。如果你真的想写一个解析器(我会写解析规则,而不是你自己的解析器引擎)看看 antlr 和 MS oslo。

关于html - 如何将 HTML 标记流重写为新文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2307405/

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