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 중국어 웹사이트의 기타 관련 기사를 참조하세요!