Go에서는 동적 속성이 있는 XML을 언마샬링하는 것이 어려울 수 있습니다. 그러나 최근 문제 3633이 해결되면서 이제 이 상황을 간단하고 효율적으로 처리할 수 있는 방법이 생겼습니다.
전통적으로 Go에서 XML을 역정렬화할 때 예상되는 XML 요소와 일치하도록 특정 필드가 있는 구조체를 정의합니다. 그러나 예측할 수 없는 속성이 포함된 XML 태그를 발견하면 어떻게 될까요?
해결책은 ",any,attr"을 사용하는 데 있습니다. Go 구조체 정의에 " 태그를 추가하세요. 이 태그는 지정된 요소의 모든 속성을 xml.Attr 구조체의 조각으로 수집하도록 XML 역마샬러에 지시합니다.
다음 XML 조각을 고려하세요.
<TAG ATTR1="VALUE1" ATTR2="VALUE2" />
이 XML을 Go 구조체로 역마샬링하려면 다음을 사용할 수 있습니다. 코드:
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) }
이 코드를 실행하면 v 구조체가 다음 데이터로 채워집니다.
{[]xml.Attr{ {Name: {Local: "ATTR1"}, Value: "VALUE1"}, {Name: {Local: "ATTR2"}, Value: "VALUE2"}, }}
속성 슬라이스에는 각각 하나를 나타내는 두 개의 xml.Attr 구조체가 포함되어 있습니다. XML 태그의 속성을 선택합니다.
",any,attr" 태그는 Go에서 동적 속성이 포함된 XML 태그를 역마샬링하는 강력하고 유연한 방법을 제공합니다. 이 기능을 활용하면 예측할 수 없는 XML 구조를 쉽게 처리하고 필요한 데이터를 사용자 정의 구조로 추출할 수 있습니다.
위 내용은 Go에서 동적 속성을 사용하여 XML을 어떻게 역마샬링할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!