2017-02-19 4 views
0

私は数日間これを理解しようとしてきましたが、Google検索の最も効果的なものでさえも疲れてしまいました。私がやっていることは、タイプHTMLのファイルを開き、Goのライブラリ(http://golang.org/x/net/html)でimgタグとそのソースを既知のディレクトリとファイルセットに変更することです。これまでのところ私は、これを使用して要素を見つけることができました要素を見つけて、正しいディレクトリを追加することができていますが、それだけでこのdocファイルを変更していますGoでHTMLファイルの要素を変更するにはどうすればよいですか?

//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) 

。実際のファイルに追加する方法がわかりません。私が持っている唯一の考えは、書類をある種の書類として開き、新しいデータを書類からファイルにコピーすることです。どんな助けでも大歓迎です!あなたの時間をとっていただきありがとうございます:)。

答えて

0

編集した文書は間違いなく保存してください。

まず、読み取り/書き込みのためにファイルを開き、切り捨て:

file, err := os.OpenFile("sample.html", os.O_RDWR | os.O_TRUNC, 0644) 

そして、あなたは処理を終了した後、元のファイル上書き:

html.Render(file, doc) 
+0

を私はこれを試してみて、どのようにそれを教えてくれます行く! –

+0

私は現在、ファイルの書き込みが間違っている問題を収容していますが、これが正しい方法であると思います。ありがとうございます! –

関連する問題