我一直试图解决这个问题几天,即使是最有效的谷歌搜索,我也已经筋疲力尽了。我一直在尝试打开一个HTML类型的文件,并使用Go的库(http://golang.org/x/net/html)将img标签及其源修改为已知目录和文件集。到目前为止,我已经能够找到使用它的元素,
//Open the file and return a variable called file.
file, _ = os.Open(file.Name())
//Create the doc
doc, err := html.Parse(file)
//Check for err when generating the doc
check(err)
//Look for tags with img using an anonymous function.
var f func(*html.Node)
f = func(n *html.Node) {
if n.Type == html.ElementNode && n.Data == "img" {
for _, img := range n.Attr {
if img.Key == "src" {
str := breakdownURL(img.Val) //Gets the ../../resource/(thing.h23.jpg) <-- That
//Creating a static address to add to the dynamic one
address := filepath.Join(filepath.Join("Resources", getFileNotExt(file)), str)
img.Val = address
break
}
}
}
for at := n.FirstChild; at != nil; at = at.NextSibling {
f(at)
}
}
f(doc)
已经能够找到元素并附加正确的目录,但它只修改了这个doc文件。我不知道如何将它附加到实际文件中。我唯一的想法是将文档打开为某种写入方式并将新数据从doc复制到文件中。任何帮助是极大的赞赏!非常感谢你抽出时间:)。
答案 0 :(得分:1)
您绝对应该保存已编辑的文档。
首先,打开文件进行读/写并截断:
file, err := os.OpenFile("sample.html", os.O_RDWR | os.O_TRUNC, 0644)
完成处理后,覆盖原始文件:
html.Render(file, doc)