수색…


비고

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)

}

Playground



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow