>  기사  >  백엔드 개발  >  Go에서 맵을 XML로 마샬링하는 방법: 구조체가 유일한 방법인가요?

Go에서 맵을 XML로 마샬링하는 방법: 구조체가 유일한 방법인가요?

Barbara Streisand
Barbara Streisand원래의
2024-10-29 18:31:02312검색

How to Marshal a Map to XML in Go: Is a Struct the Only Way?

Go에서 Marshall Map to XML

지도를 XML 데이터로 마샬링하는 중에 오류가 발생했습니까? 해결책을 알아보려면 이 기사를 살펴보세요.

인기 있는 JSON-XML 변환은 지도 활용으로 잘 알려져 있습니다. 그러나 XML의 경우에는 상황이 달라집니다. 두 상황 모두에서 지도가 같은 방식으로 작동하지 않는 이유가 궁금할 수도 있습니다. 여기에서 Struct를 사용하는 것이 유일한 실행 가능한 솔루션이라는 것이 사실입니까?

솔루션

xml.Marshaler 유형을 사용하여 뛰어난 솔루션을 찾았습니다. . 작동 방식은 다음과 같습니다.

  1. StringMap 유형 정의: 지도를 나타내는 StringMap이라는 사용자 정의 유형을 만듭니다. 이 유형은 map[string]string 기본 구조를 갖습니다.
  2. MarshalXML 메소드 구현: StringMap은 xml.Marshaler 인터페이스의 MarshalXML 메소드를 구현해야 합니다. 이 메소드는 지도를 XML로 변환합니다.
  3. 지도 값 인코딩: 지도의 키-값 쌍을 반복하여 각 키에 대해 xml.StartElement 토큰을 생성하고 xml.CharData 각 값에 대한 토큰.
  4. 플러시 및 반환: XML 토큰을 쓰고 버퍼를 플러시하려면 인코더의 EncodeTokenFlush 메소드.

xml.Marshaler를 구현하는 사용자 정의 StringMap 유형을 생성한 후 맵을 XML로 마샬링하는 것은 다음과 같이 간단합니다.

<code class="go">output, err := xml.MarshalIndent(data, "", "  ")</code>

이 방법은 XML 마샬링에서 맵을 처리하는 편리한 방법을 제공하므로 Structs에 의존할 필요가 없습니다.

위 내용은 Go에서 맵을 XML로 마샬링하는 방법: 구조체가 유일한 방법인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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