2012-09-20 53 views
2

有沒有一種方法來提取一個HTML文件中的圖像源只使用一個結構(與encode/xml)?現在,我有這樣的事情去xml解組

type XML struct { 
    A Image `xml:"div>img"` 
} 

type Image struct { 
    I string `xml:"src,attr"` 
} 

而且將是巨大的,僅聲明是這樣的:

type Image struct { 
    I string `xml:"div>img,src,attr"` 
} 

這是HTML:

<div><div><img src="hello.png"/></div></div> 
+1

幾乎沒有作爲HTML不是XML和實際HTML解析器必須與HTML錯誤應對。但XML不允許錯誤和XML不是HTML 在XML中無效,因爲沒有標記或 Max

+0

嗯真相是這是一個錯字,現在它已被糾正(感謝您指出了這一點)。問題仍然是一樣的。 – Inuart

+0

此問題恰恰與Go 1.2相關: https://code.google.com/p/go/issues/detail?id=3633 – dezza

回答

1

似乎是一個好辦法,就是使用exp/html包,如下所示:

package main 

import (
    "exp/html" 
    "strings" 
) 

func main() { 
    a, _ := html.Parse(strings.NewReader(testString)) 
    println(a.FirstChild.FirstChild.NextSibling.FirstChild.FirstChild.FirstChild.Attr[0].Val) 
} 

var testString = `<div><div><img src="hello.png"/></div></div>` 

這一切FirstChildNextSibling是必要的,因爲exp/html構建了一個「正確」的HTML5樹所以這段代碼實際上是解析此:

<html> 
    <head></head> 
    <body> 
     <div> 
      <div> 
       <img src="hello.png"/> 
      </div> 
     </div> 
    </body> 
</html>