[go] Go 언어로 XML 데이터 파싱하기

XML은 데이터를 구조화하여 저장하고 전송하는 데 사용되는 인기 있는 형식입니다. Go 언어는 많은 XML 처리 기능을 제공하여 XML 데이터를 쉽게 파싱하고 조작할 수 있습니다.

이 블로그 포스트에서는 Go 언어로 XML 데이터를 파싱하고 필요한 정보를 추출하는 방법을 살펴볼 것입니다.

XML 데이터 파싱하기

Go 언어에서 XML 데이터를 파싱하는 데에는 encoding/xml 패키지를 사용합니다. 이 패키지를 사용하여 XML 데이터를 구조체로 매핑하고 필요한 필드를 추출할 수 있습니다.

아래는 간단한 XML 데이터를 파싱하여 필드를 추출하는 예제 코드입니다.

package main

import (
	"encoding/xml"
	"fmt"
)

type Person struct {
	XMLName xml.Name `xml:"person"`
	Name    string   `xml:"name"`
	Age     int      `xml:"age"`
}

func main() {
	xmlData := []byte(`<person><name>John Doe</name><age>30</age></person>`)
	var person Person
	err := xml.Unmarshal(xmlData, &person)
	if err != nil {
		fmt.Println("Error unmarshalling XML:", err)
		return
	}
	fmt.Println("Name:", person.Name)
	fmt.Println("Age:", person.Age)
}

위 예제 코드에서는 encoding/xml 패키지를 사용하여 Person 구조체와 XML 데이터를 매핑하고 필요한 필드를 추출합니다.

속성과 내부 요소 파싱하기

XML 요소의 속성과 내부 요소도 파싱할 수 있습니다. 다음은 이러한 기능을 보여주는 예제 코드입니다.

type Book struct {
	XMLName  xml.Name `xml:"book"`
	Title    string   `xml:"title"`
	Author   string   `xml:"author"`
	Pages    int      `xml:"pages"`
	PubDate  string   `xml:"publish_date"`
	Language string   `xml:"language,attr"`
}

func main() {
	xmlData := []byte(`<book language="en"><title>Go Programming</title><author>John Smith</author><pages>200</pages><publish_date>2022-01-01</publish_date></book>`)
	var book Book
	err := xml.Unmarshal(xmlData, &book)
	if err != nil {
		fmt.Println("Error unmarshalling XML:", err)
		return
	}
	fmt.Println("Title:", book.Title)
	fmt.Println("Author:", book.Author)
	fmt.Println("Pages:", book.Pages)
	fmt.Println("Publication Date:", book.PubDate)
	fmt.Println("Language:", book.Language)
}

위 코드에서는 language 속성과 내부 요소들을 포함하는 Book 구조체를 사용하여 XML 데이터를 파싱합니다.

결론

Go 언어의 encoding/xml 패키지를 사용하면 XML 데이터를 쉽게 파싱하고 필요한 정보를 추출할 수 있습니다. 이를 통해 Go 언어로 XML 데이터를 효과적으로 처리할 수 있습니다.

XML 데이터 파싱 및 Go 언어에 대한 더 많은 정보는 Go 언어 공식 문서를 참조하시기 바랍니다.