2017-02-19 3 views
0

Ich habe versucht, dies für ein paar Tage herauszufinden, und ich habe irgendwie sogar die effektivste von Google-Suche erschöpft. Was ich versucht habe, ist eine Datei vom Typ HTML zu öffnen und mit Go's Bibliothek (http://golang.org/x/net/html) die img-Tags und ihre Quelle in ein bekanntes Verzeichnis und eine Reihe von Dateien zu ändern. Bisher habe ich in der Lage, die Elemente mit diesem zu finden,Wie ändere ich Elemente einer HTML-Datei mit Go?

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

, dass die Elemente zu finden, ist in der Lage und das richtige Verzeichnis anhängen, aber es ist nur diese doc-Datei ändern. Ich habe keine Ahnung, wie man es an die eigentliche Datei anhängt. Der einzige Gedanke, den ich habe, ist das Öffnen des Dokuments als eine Art Schreibweise und das Kopieren der neuen Daten aus dem Dokument in die Datei. Jede Hilfe wird sehr geschätzt! Vielen Dank für Ihre Zeit :).

Antwort

0

Sie sollten das bearbeitete Dokument unbedingt speichern.

Zunächst öffnen Sie die Datei zum Lesen/Schreiben und gestutzt:

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

Und nachdem Sie die Bearbeitung abgeschlossen haben, überschreiben die Original-Datei:

html.Render(file, doc) 
+0

Ich werde dies versuchen und Ihnen sagen, wie es geht! –

+0

Ich habe jetzt ein Problem, bei dem das Schreiben der Datei die Dinge falsch macht, aber ich denke, das ist der richtige Weg, dies zu tun, danke! –

Verwandte Themen