>백엔드 개발 >Golang >Go에서 알 수 없는 속성이 있는 XML 속성을 역마샬링하는 방법은 무엇입니까?

Go에서 알 수 없는 속성이 있는 XML 속성을 역마샬링하는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-25 02:30:10152검색

How to Unmarshal XML Attributes with Unknown Attributes in Go?

Go에서 알 수 없는 속성이 있는 XML 속성 역마샬링

Go에서 인코딩/xml 패키지를 사용하면 XML 데이터를 정렬 및 역마샬링할 수 있습니다. Go 데이터 구조에서. 그러나 기본적으로 사전에 알려진 고정 속성이 있는 역마샬링 XML 태그만 지원합니다.

XML의 동적 속성

어떤 경우에는 XML 문서에 태그가 있을 수 있습니다. 사전에 알려지지 않은 동적 속성을 가지고 있습니다. 이는 이러한 XML 데이터를 Go 구조체로 역마샬링할 때 문제가 될 수 있습니다.

동적 속성 역마샬링

2017년 후반부터 Go는 다음을 사용하여 동적 속성이 있는 XML 태그 역마샬링을 지원합니다. xml:",any,attr" 태그 지시어. 이 지시문은 모든 속성을 xml.Attr 슬라이스로 수집하도록 언마샬러에 지시합니다.

예:

package main

import (
    "encoding/xml"
    "fmt"
)

func main() {
    var v struct {
        Attributes []xml.Attr `xml:",any,attr"`
    }

    data := `<TAG ATTR1="VALUE1" ATTR2="VALUE2" />`

    err := xml.Unmarshal([]byte(data), &v)
    if err != nil {
        panic(err)
    }
    fmt.Println(v)
}

위 코드가 실행되면 print:

{
  Attributes: [
    {Name:ATTR1 Value:VALUE1}
    {Name:ATTR2 Value:VALUE2}
  ]
}

참고:

xml:",any,attr" 지시문은 중첩된 태그에서 속성을 수집하지 않습니다. 중첩된 태그에서 속성을 수집해야 하는 경우 사용자 정의 XML 디코더를 생성해야 합니다.

위 내용은 Go에서 알 수 없는 속성이 있는 XML 속성을 역마샬링하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.