XML 요소를 Go 구조체로 역마샬링
속성과 부동 소수점 값을 포함하는 다음 XML 요소를 고려하세요.
<thing prop="1"> 1.23 </thing> <thing prop="2"> 4.56 </thing>
이 XML을 Go 구조체로 역마샬링하려면 두 가지 설계 접근 방식을 사용할 수 있습니다.
XMLName 속성 사용:
<code class="go">type ThingElem struct { XMLName xml.Name `xml:"thing"` Prop int `xml:"prop,attr"` Value float64 // ??? }</code>
이 경우 에서 XMLName 필드는 구조체가 "사물" XML 요소를 나타냄을 지정하는 데 사용됩니다. 그러나 구조체 정의에 이 필드를 항상 포함할 필요는 없습니다.
XMLName 속성 없음:
<code class="go">type ThingElem struct { Prop int `xml:"prop,attr"` Value float64 // ??? } type ThingWrapper struct { T ThingElem `xml:"thing"` }</code>
이 접근 방식에서는 ThingElem 구조체가 내에서 역마샬링됩니다. 래퍼 구조체 ThingWrapper. 래퍼 구조체의 xml:"thing" 태그는 ThingElem이 "thing" XML 요소를 나타내야 함을 지정합니다.
값 필드 유형 결정:
값 필드에서는 XML 요소에 부동 소수점 값을 나타내는 문자 데이터(텍스트 콘텐츠)가 포함되어 있다는 점에 유의하는 것이 중요합니다. 이를 올바르게 역마샬링하려면 다음과 같이 변경해야 합니다.
값에서 공백 제거:
XML 데이터에는 부동 소수점 값 내에 공백이 포함되어 있습니다. 마샬링을 해제하기 전에 이러한 공백을 제거해야 합니다.
",chardata" 주석 사용:
XML 태그의 내용은 다음의 ",chardata" 주석을 사용하여 참조할 수 있습니다. 구조체 필드 정의:
<code class="go">Value float64 `xml:",chardata"`</code>
이러한 수정 사항을 통합하고 XML 데이터에서 공백이 잘리도록 하면 위에서 언급한 디자인 접근 방식 중 하나를 사용하여 지정된 XML을 Go 구조체로 성공적으로 역마샬링할 수 있습니다.
위 내용은 속성 및 부동 소수점 값이 포함된 XML 요소를 Go 구조체로 역정렬화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!