Go xml unmarshalling
Есть ли способ извлечь источник изображения в файл HTML, используя только одну структуру (с encode/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 ответ
Решение
Кажется, хороший способ - это использовать 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>`
Все это FirstChild
а также NextSibling
необходимы, потому что exp/html
создает "правильное" дерево html5, так что этот код на самом деле анализирует это:
<html>
<head></head>
<body>
<div>
<div>
<img src="hello.png"/>
</div>
</div>
</body>
</html>