Para aqueles que vêm para ver a sintaxe de Go, saiba que apesar de sua sintaxe confusa à primeira vista, não deixa de ser fácil de entender e fácil de entender após 2/3 horas de prática. De minha parte, a princípio simplesmente descobri o Língua Go (Golang) através do meu último amor… Docker! Posteriormente, fui a um meetup que tratava desse assunto e depois de trabalhar 1 hora em um projeto agora no fundo do meu GitLab, comecei a trabalhar em dois projetos, incluindo questões de desempenho e manutenibilidade. do código são pontos-chave de um projeto viável.
Para escrever este post, extraí um problema de um dos meus projetos. Nomeadamente que a utilização da linguagem é na minha opinião uma grande mais valia, pois esta linguagem recente é extremamente fácil de compilar e facilita a utilização de bibliotecas externas... Quando necessário porque Go tem uma variedade de pacotes bem sentido. Neste caso, o pacote codificação / xml.
O exemplo a seguir demonstra a extração de dados de um RSS mas este método pode ser facilmente adaptado para extrair um Mapa do Site ou qualquer outro XML devidamente construído.
demonstração
Para ilustrar meu trabalho, peguei o fluxo RSS dado como um exemplo na página da Wikipedia.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?versão xml=”1.0” codificação =” UTF-8"?>
<rssversão="2.0">
<canal>
<título>Meu site</título>
<descrição>Este é um exemplo de feed RSS 2.0</descrição>
<lastBuildData>Sáb, 07 de setembro de 2002 00:00:01 GMT</lastBuildData>
<link>http://www.example.org</link>
<item>
<título>Notícias nº 1</título>
<descrição>Esta é a minha primeira notícia</descrição>
<pubDate>Sáb, 07 de setembro de 2002 00:00:01 GMT</pubDate>
<link>http://www.example.org/actu1</link>
</item>
<item>
<título>Notícias nº 2</título>
<descrição>Esta é a minha segunda notícia</descrição>
<pubDate>Sáb, 07 de setembro de 2002 00:00:01 GMT</pubDate>
<link>http://www.example.org/actu2</link>
</item>
</canal>
</rss>
Para analisar este fluxo, você não precisa de mais de 45 linhas, pacote et importar Entendido. E aqui está o bebê:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
pacote principal
importar (
"codificação/xml"
"io/tool"
"registro"
"osso"
)
tipo item struct {
XMLName xml.Name `xml:"item"`
Descrição corda`xml:"descrição"`
Ligação corda`xml:"link"`
PubData corda`xml:"pubDate"`
Título corda`xml:"título"`
}
tipo rss struct {
XMLName xml.Name `xml:"rss"`
Itens[]Item `xml:"canal>item"`
}
funçãoprincipal() {
arquivo, erro := ioutil.ReadFile("/go/news.rss")
if erro! = zero {
log.Println(err)
retorno
}
v := Rss{}
err = xml.Unmarshal(arquivo, &v)
if erro! = zero {
log.Println(err.Error())
os.Sair(1)
}
para _, artigo:= alcance v. Itens {
log. Println("Título: ", título do item)
log. Println("Descrição: ", descrição do item)
log. Println("Link: ", item.Link)
log. Println("PubData: ", item.PubDate)
}
}
Neste código, vemos a definição das estruturas. Primeiro, leia o arquivo notícias.rss que conterá o conteúdo do seu feed.
Resultado
Aqui está o resultado:
1
2
3
4
5
6
7
8
9
root@6c38532f4658:/ir# vá executar main.go
2015/08/20 07:05:50 Título: Notícias nº 1
2015/08/20 07:05:50 Descrição: Esta é a minha primeira notícia