Golang: 동적 속성을 사용하여 XML 역마샬링
소개:
Go에서 인코딩/xml은 XML 데이터를 처리하는 효율적이고 다양한 방법입니다. 그러나 동적 속성이 있는 XML 요소를 처리할 때 존재하는 속성의 수와 유형을 알 수 없기 때문에 역마샬링이 어려워집니다.
질문:
XML 태그를 어떻게 역마샬링할 수 있습니까? 직면하게 될 정확한 속성을 예상하지 못하는 경우 Go의 동적 속성이 있습니까?
답변:
2017년 말 이전에는 Go의 XML 역마샬링에서 이 기능이 직접 지원되지 않았습니다. 그러나 인코딩/xml 패키지의 발전으로 이 기능이 구현되었습니다.
동적 속성이 있는 XML 태그를 역마샬링하려면 다음 구문을 사용할 수 있습니다.
type MyStruct struct { Attributes []xml.Attr `xml:",any,attr"` }
다음은 작동 방식을 보여주는 예입니다.
package main import ( "encoding/xml" "fmt" ) func main() { type MyStruct struct { Attributes []xml.Attr `xml:",any,attr"` } data := `` var v MyStruct if err := xml.Unmarshal([]byte(data), &v); err != nil { panic(err) } fmt.Println(v.Attributes) }
이 예에서 MyStruct 유형은 Attributes라는 필드를 정의합니다. xml:"...,any,attr" 태그는 언마샬러에게 모든 XML 속성을 xml.Attr 슬라이스로 이 필드에 할당하도록 지시합니다.
언마샬러가 데이터 변수에 제공된 XML 데이터를 발견하면 알 수 없는 속성(ATTR1 및 ATTR2)을 v 구조체의 속성 필드로 성공적으로 역마샬링합니다. 이를 통해 다양한 속성 세트가 있는 XML 요소를 동적으로 처리할 수 있습니다.
이 기능을 사용하려면 Go 버전 1.9 이상이 필요합니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3