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 := `<TAG ATTR1="VALUE1" ATTR2="VALUE2" />` 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 이상이 필요합니다.
위 내용은 Go에서 동적 속성을 사용하여 XML을 역정렬화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!