-- Go

Go ile XML Pratikleri #1

Go ile XML Pratikleri #1

Go programlama dili çalışmalarına “Go ile XML Pratikleri” serisiyle devam ediyoruz. Bu seride Go dilini kullanarak XML formatındaki dosyalarda yapacağım uygulamaları paylaşacağım. Bu pratikler birbirinden bağımsız olabileceği gibi birbirinin devamı niteliğinde de olabilir.

Bu makalemin konusu bir XML dosyasındaki hiyerarşik veriyi Go ile elde etmek ve ekranda göstermek olacak.

Örnek XML veri (sites.xml);

<?xml version="1.0" encoding="utf-8"?>
<sites version="1">
    <site>
        <Name>www.dijibil.com</Name>
        <Description>Online eğitim sitesi</Description>
        <Category>Learning</Category>
    </site>
    <site>
        <Name>www.cihanozhan.com</Name>
        <Description>Kişisel blog sitesi</Description>
        <Category>Blog</Category>
    </site>
    <site>
        <Name>www.golang.org.tr</Name>
        <Description>Go Türkiye Topluluğu</Description>
        <Category>Community</Category>
    </site>
</sites>

Uygulama kodları;

package main

import (
	"encoding/xml"
	"fmt"
	"io/ioutil"
	"os"
)

// ` karakteri; klavyeden "ALT + 96" ile kullanılır.

func main() {

	file, err := os.Open("sites.xml") // XML dosyaya erişmek için

	if err != nil {
		fmt.Printf("error: %v", err)
		return
	}
	defer file.Close()

	data, err := ioutil.ReadAll(file)

	if err != nil {
		fmt.Printf("error: %v", err)
		return
	}

	v := ObjectSites{}
	err = xml.Unmarshal(data, &v)
	if err != nil {
		fmt.Printf("error: %v", err)
		return
	}

	fmt.Println(v)

}

type ObjectSites struct {
	XMLName     xml.Name `xml:"sites"`
	Version     string   `xml:"version,attr"`
	Sites       []site   `xml:"site"`
	Description string   `xml:",innerxml"`
}

type site struct {
	XMLName     xml.Name `xml:"site"`
	Name        string   `xml:"Name"`
	Description string   `xml:"Description"`
	Category    string   `xml:"Category"`
}

Uygulama çıktısı;

go-xml-1

İyi çalışmalar.
Cihan Özhan

Yorumla

Yorum