为了账号安全,请及时绑定邮箱和手机立即绑定

有什么方法可以使用html.Parse而无需添加节点来制作“格式正确的树”?

有什么方法可以使用html.Parse而无需添加节点来制作“格式正确的树”?

Go
largeQ 2021-05-06 16:47:13
package mainimport (    "bytes"    "code.google.com/p/go.net/html"    "fmt"    "log"    "strings")func main() {    s := "Blah. <b>Blah.</b> Blah."    n, err := html.Parse(strings.NewReader(s))    if err != nil {        log.Fatalf("Parse error: %s", err)    }    var buf bytes.Buffer    if err := html.Render(&buf, n); err != nil {        log.Fatalf("Render error: %s", err)    }    fmt.Println(buf.String())}输出:<html><head></head><body>Blah. <b>Blah.</b> Blah.</body></html>有没有办法阻止html.Parse从制作出文档片段(即避免添加<html>,<body>等等)?我知道,html.ParseFragment但似乎表现出相同的行为。您可以通过使用父元素包装要解析的文本来解决该问题,例如<span>执行以下操作:n = n.FirstChild.LastChild.FirstChild但是,至少可以这样说,这似乎很糊涂。理想情况下,我希望:接受输入,操纵或删除其中找到的节点,并将结果写回字符串,即使结果是不完整的文档也是如此。
查看完整描述

2 回答

?
慕运维8079593

TA贡献1876条经验 获得超5个赞

您需要http://godoc.org/code.google.com/p/go.net/html#ParseFragment。传递一个假的Body元素作为您的上下文,该片段将作为片段中元素的一部分返回。

您可以在Partial *函数中的go-html-transform的go.net/html包装程序包中看到一个示例。https://code.google.com/p/go-html-transform/source/browse/h5/h5.go#32


查看完整回答
反对 回复 2021-05-31
  • 2 回答
  • 0 关注
  • 199 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信