猿问

使用go-html-transform预处理HTML:替换失败

在这个关于将HTML标签列入白名单的问题之后,我一直在尝试Jeremy Wall的go-html-transform。为了改善可搜索的文档,我在这里问的是这个问题,而不是直接困扰作者。希望这对于SO来说不是特定于工具的。


App Engine,最新的SDK。Post.Body是[]个字节。这有效:


package posts


import (

    // ...      

    "html/template"

    "code.google.com/p/go-html-transform/html/transform"

    "code.google.com/p/go-html-transform/h5"

)


// ...


// Pre-process post body, then return it to the template as HTML()

// to avoid html/template's escaping allowable tags

func (p *Post) BodyHTML() template.HTML {

    doc, _ := transform.NewDoc(string(p.Body))

    t := transform.NewTransform(doc)


    // Add some text to the end of any <strong></strong> nodes.

    t.Apply(transform.AppendChildren(h5.Text("<em>Foo</em>")), "strong")

    return template.HTML(t.String())

}

结果:


<strong>Blarg.<em>Foo</em></strong>

但是,如果使用AppendChildren()代替以下内容:


t.Apply(transform.Replace(h5.Text("<em>Foo</em>")), "strong")

我收到内部服务器错误。我是否误解了Replace()的使用?现有文档表明这种事情应该是可能的。


qq_花开花谢_0
浏览 229回答 1
1回答

慕容708150

在App Engine外部运行您的转换代码后,它会出现问题,此时您可以在源代码中看到TODO。这样一来,阅读代码并看到如果给出根节点便会出现紧急情况,这并不太难。
随时随地看视频慕课网APP

相关分类

Go
我要回答