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

package main


import (

    "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

但是,至少可以这样说,这似乎很糊涂。


理想情况下,我希望:接受输入,操纵或删除其中找到的节点,并将结果写回字符串,即使结果是不完整的文档也是如此。


largeQ
浏览 205回答 2
2回答

慕运维8079593

您需要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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go