티스토리 뷰
Go에서 XML 처리를 위해 encoding/xml 패키지를 사용합니다. 이 패키지는 XML 데이터를 Go 객체로 디코딩(언마셜)하고, Go 객체를 XML 형식으로 인코딩(마셜)하는 기능을 제공합니다.
XML 데이터 디코딩 (Unmarshal)
xml.Unmarshal 함수를 사용하여 XML 데이터를 Go 객체로 디코딩할 수 있습니다. 예를 들어, XML 문자열을 구조체에 바인딩하는 방법은 다음과 같습니다.
package main
import (
"encoding/xml"
"fmt"
"log"
)
// Person 구조체 정의
type Person struct {
XMLName xml.Name `xml:"person"`
Name string `xml:"name"`
Age int `xml:"age"`
}
func main() {
// XML 문자열
xmlString := `<person><name>Alice</name><age>30</age></person>`
// 구조체 초기화
var person Person
// XML 문자열을 구조체로 디코딩
err := xml.Unmarshal([]byte(xmlString), &person)
if err != nil {
log.Fatalf("Error decoding XML: %v", err)
}
// 결과 출력
fmt.Printf("Name: %s, Age: %d\n", person.Name, person.Age)
}
XML 데이터 인코딩 (Marshal)
xml.Marshal 함수를 사용하여 Go 객체를 XML 형식으로 인코딩할 수 있습니다. 예를 들어, 구조체를 XML 문자열로 변환하는 방법은 다음과 같습니다.
package main
import (
"encoding/xml"
"fmt"
"log"
)
// Person 구조체 정의
type Person struct {
XMLName xml.Name `xml:"person"`
Name string `xml:"name"`
Age int `xml:"age"`
}
func main() {
// 구조체 초기화
person := Person{
Name: "Bob",
Age: 25,
}
// 구조체를 XML 문자열로 인코딩
xmlData, err := xml.Marshal(person)
if err != nil {
log.Fatalf("Error encoding XML: %v", err)
}
// XML 문자열 출력
fmt.Println(string(xmlData))
}
XML 문자열을 객체에 바인딩 및 객체를 XML로 변환하는 전체 예제
package main
import (
"encoding/xml"
"fmt"
"log"
)
// Person 구조체 정의
type Person struct {
XMLName xml.Name `xml:"person"`
Name string `xml:"name"`
Age int `xml:"age"`
}
func main() {
// XML 문자열
xmlString := `<person><name>Charlie</name><age>28</age></person>`
// 구조체 초기화
var person Person
// XML 문자열을 구조체로 디코딩 (Unmarshal)
err := xml.Unmarshal([]byte(xmlString), &person)
if err != nil {
log.Fatalf("Error decoding XML: %v", err)
}
// 디코딩 결과 출력
fmt.Printf("Decoded Struct - Name: %s, Age: %d\n", person.Name, person.Age)
// 구조체를 XML 문자열로 인코딩 (Marshal)
xmlData, err := xml.Marshal(person)
if err != nil {
log.Fatalf("Error encoding XML: %v", err)
}
// 인코딩 결과 출력
fmt.Println("Encoded XML:", string(xmlData))
}
실행 결과
Decoded Struct - Name: Charlie, Age: 28
Encoded XML: <person><name>Charlie</name><age>28</age></person>
코드 설명
- 구조체 정의: Person 구조체는 XML 데이터의 형식을 정의합니다. 구조체 필드에는 xml 태그를 사용하여 XML 요소와 매핑합니다.
- XML 문자열: 예제에서 사용되는 XML 문자열입니다.
- 구조체 초기화: XML 데이터를 디코딩할 구조체를 선언하고 초기화합니다.
- Unmarshal: xml.Unmarshal 함수를 사용하여 XML 문자열을 구조체로 디코딩합니다. XML 데이터가 바이트 슬라이스 형식으로 제공되므로 []byte(xmlString)로 변환합니다.
- 디코딩 결과 출력: 디코딩된 구조체 데이터를 출력합니다.
- Marshal: xml.Marshal 함수를 사용하여 구조체를 XML 문자열로 인코딩합니다. 이 함수는 구조체를 바이트 슬라이스 형식의 XML 데이터로 변환합니다.
- 인코딩 결과 출력: 인코딩된 XML 문자열을 출력합니다.
이 예제에서는 XML 데이터를 구조체에 바인딩하고, 구조체를 XML 문자열로 변환하는 기본적인 방법을 다룹니다. 이를 통해 XML 데이터와 Go 객체 간의 변환 작업을 쉽게 처리할 수 있습니다.
출처 : chatGPT
'go' 카테고리의 다른 글
Go 삭제 후 Homebrew로 설치하기(go kit 설치) (0) | 2024.07.17 |
---|---|
GO sql db 처리 (0) | 2024.07.16 |
Go Json 처리 (0) | 2024.07.16 |
Go Http Post 호출 (0) | 2024.07.16 |
Go Http GET 요청 (0) | 2024.07.16 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 메시지
- REST
- ag grid
- springboot
- oracle
- 설정
- mybatis
- listToMap
- thymeleaf
- 샘플
- 스프링부트
- restful서비스
- UI
- 엑셀
- example
- 타임리프
- AG-GRID
- lombok
- 예제
- cache
- java
- mapToList
- sample
- SHEETJS
- RESTful
- Javascript
- 스프링
- Spring Boot
- 그리드
- spring
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함