読者です 読者をやめる 読者になる 読者になる

uokadaの見逃し三振は嫌いです

ここで述べられていることは私の個人的な意見に基づくものであり、私が所属する組織には一切の関係はありません。

改・Go言語でXMLのパースする

Golang: Convert JSON to Struct
jmervine/gojson-http

このツールを見てたら自分の知らないstructの定義の仕方があったのでこれをXMLでも出来るよなと思ってやってみた。

以前は struct を3つ定義していたものが改修してみる。

type AllowAccessFrom struct {
    // attributeを取るときは"属性,attr"の形式で取得できる
    Domain string `xml:"domain,attr"`
    Secure bool   `xml:secure,attr`
}

type SiteControl struct {
    // これも上と同じ
    Pemission string `xml:"permitted-cross-domain-policies,attr"`
}

type CrossDomainPolicy struct {
    // タグとフィールドが一致しない場合は `xml:タグ名` で取得
    Policies   SiteControl       `xml:"site-control"`
    DomainList []AllowAccessFrom `xml:"allow-access-from"`
}

json2struct でやってる方法を真似てみる。すると、これぐらいにコードが短くなった。 これのほうが可読性が高そうな印象。

type CrossDomainPolicy struct {
    Policies struct {
        Pemission string `xml:"permitted-cross-domain-policies,attr"`
    } `xml:"site-control"`
    DomainList []struct {
        Domain string `xml:"domain,attr"`
        Secure bool   `xml:secure,attr`
    } `xml:"allow-access-from"`
}

2015/05/28追記

http://mervine.net/json2struct/
今見るとツールが落ちてるみたいなのでソースから自前でサーバーたてろってことなのかな。

github.com