>  기사  >  백엔드 개발  >  Golang에서 속성 및 부동 소수점 값을 사용하여 XML 요소를 비정렬화하는 방법은 무엇입니까?

Golang에서 속성 및 부동 소수점 값을 사용하여 XML 요소를 비정렬화하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-24 04:55:02567검색

How to Unmarshal XML Elements with Attributes and Floating-Point Values in Golang?

Golang에서 XML 요소 언마샬링 이해

XML 요소를 Go 구조체로 언마샬링하는 것은 간단할 수 있지만 특정 측면에는 설명이 필요할 수 있습니다. 이 문서에서는 속성 및 부동 소수점 값을 사용하여 XML 요소를 역마샬링하는 방법에 대해 자세히 설명합니다.

구조체 및 역마샬링

XML을 역마샬링하려면 해당 Go 구조체를 정의해야 합니다. . XML 요소의 특성과 값은 구조체의 필드에 매핑됩니다. 예를 들어, 다음 코드는 을 나타내는 구조체 ThingElem을 정의합니다. XML 요소:

<code class="go">type ThingElem struct {
    Prop  int   `xml:"prop,attr"`
    Value float // ???
}</code>

그러나 XML 요소에는 부동 소수점 값이 포함되어 있으므로 현재 값 필드에 해당 유형이 없습니다.

값을 사용하여 부동 소수점 비정렬화 값

부동 소수점 값을 비정렬화하려면 값 주석을 사용할 수 있습니다. 이는 언마샬러에게 내의 텍스트를 매핑하도록 지시합니다. 값 필드에 태그 추가:

<code class="go">type ThingElem struct {
    Prop  int     `xml:"prop,attr"`
    Value float64 // Use float64 for float value
}</code>

XMLName 및 Unmarshaling

XMLName 필드는 구조체와 연결된 XML 요소 이름을 지정하는 데 사용됩니다. 일반적으로 어떤 요소가 구조체에 매핑되어야 하는지 결정하는 데 모호한 경우에만 XMLName을 사용해야 합니다. 이 경우 모호성이 없으므로 XMLName을 사용할 필요가 없습니다.

구조체 래핑

원하는 경우 ThingElem 구조체를 다른 구조체로 래핑할 수 있습니다. 루트 요소를 처리하려면:

<code class="go">type ThingWrapper struct {
    T ThingElem `xml:"thing"`
}</code>

이 래퍼는 편의를 위해 ThingElem 구조체 요소를 그룹화하는 방법을 제공합니다.

샘플 XML

To 다음은 제공한 XML의 예입니다.

<code class="xml"><thing prop="1">
  1.23
</thing>
<thing prop="2">
  4.56
</thing></code>

ThingElem 구조체를 사용하고 위의 지침을 따르면 이 XML을 Go 구조로 성공적으로 역마샬링할 수 있습니다.

위 내용은 Golang에서 속성 및 부동 소수점 값을 사용하여 XML 요소를 비정렬화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.