수색…
비고
encoding/xml
패키지의 많은 용도가 Go struct
마샬링 및 언 마샬링을 포함하지만 이것이 직접 매핑이 아니라는 점은 주목할 가치가 있습니다. 패키지 문서에는 다음 내용이 설명되어 있습니다.
XML 요소와 데이터 구조 사이의 매핑은 본질적으로 결함이 있습니다. XML 요소는 순서에 종속 된 익명 값의 컬렉션이며, 데이터 구조는 순서에 관계없이 명명 된 값의 컬렉션입니다.
단순한 정렬되지 않은 키 - 값 쌍의 경우 Gob 또는 JSON 과 같은 다른 인코딩을 사용하는 것이 더 적합 할 수 있습니다. 순서가 지정된 데이터 또는 이벤트 / 콜백 기반 데이터 스트림의 경우 XML이 최선의 선택 일 수 있습니다.
데이터로 중첩 된 요소의 기본 디코딩 / 언 마샬링
XML 요소는 종종 중첩되거나 속성에 데이터가 있거나 문자 데이터로 포함됩니다. 이 데이터를 수집하는 방법은 ,attr
및 ,chardata
를 사용하는 것입니다.
var doc = `
<parent>
<child1 attr1="attribute one"/>
<child2>and some cdata</child2>
</parent>
`
type parent struct {
Child1 child1 `xml:"child1"`
Child2 child2 `xml:"child2"`
}
type child1 struct {
Attr1 string `xml:"attr1,attr"`
}
type child2 struct {
Cdata1 string `xml:",cdata"`
}
func main() {
var obj parent
err := xml.Unmarshal([]byte(doc), &obj)
if err != nil {
log.Fatal(err)
}
fmt.Println(obj.Child2.Cdata1)
}
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow