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>
Другие вопросы по тегам