[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 언어 공식 문서를 참조하시기 바랍니다.