TransWikia.com

GolangでXMLの配列をパースしたい

スタック・オーバーフロー Asked by StackDestroyer on January 25, 2021

下記のリンクのようなXMLをパースしたく下記の通り実装しましたが、tagsないの文字列をうまくパースできません。
できればTagsという文字列の配列にパースしたいのですが可能でしょうか。
innerXMLを使えば、tag構造を文字列として取得できますが、できればその中身の文字列だけ取り出したいです。
よろしくお願いいたします。

https://ext.nicovideo.jp/api/getthumbinfo/sm35048506

実装

package nicoappi

import (
    "encoding/xml"
    "fmt"
    "net/http"
)

// VideoInfo is video information of niconico
type VideoInfo struct {
    Thumb Thumb `xml:"thumb"`
}

// Thumb is inner object of VideoInfo
type Thumb struct {
    VideoID      string `xml:"video_id"`
    Title        string `xml:"title"`
    Description  string `xml:"description"`
    Tags         []string  `xml:"tags"`
    UserNickname string `xml:"user_nickname"`
}

// Tag is a tag
type Tag struct {
    Content string `xml:",chardata"`
}

const baseURL = "https://ext.nicovideo.jp/api/getthumbinfo/"

// GetVideoInfo returns video information
func GetVideoInfo(videoID string) (*VideoInfo, error) {
    res, err := http.Get(baseURL + videoID)
    if err != nil {
        return nil, err
    }
    reader := xml.NewDecoder(res.Body)
    var info VideoInfo
    err = reader.Decode(&info)
    fmt.Println(info.Thumb.Tags)
    return &info, err
}

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP