닫는 태그 없이 XML 요소 생성
Go에서 인코딩/xml 패키지는 구조체를 XML 문서로 마샬링하는 데 널리 사용됩니다. 그러나
중첩된 요소가 있는 XML 봉투를 나타내는 다음 구조체를 고려하세요.
type TierRequest struct { // ... Header string `xml:"soapenv:Header"` Body TierBody `xml:"soapenv:Body"` } type TierBody struct { GetCollectorProfiles GetCollectorProfile `xml:"typ:GetCollectorProfileRequest"` } type GetCollectorProfile struct { Contexts CollectorContext `xml:"typ:Context"` Number int `xml:"typ:CollectorNumber"` } type CollectorContext struct { Channel string `xml:"Channel,attr"` Source string `xml:"Source,attr"` Language string `xml:"LanguageCode,attr"` }
이 구조체를 마샬링할 때 결과 XML 문서에는
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typ="http:/www.yahoo.com/tp/ets/2008/04/01/collector/types"> <soapenv:Header></soapenv:Header> <soapenv:Body> <GetCollectorProfiles> <typ:Context Channel="WEB" Source="WEB" LanguageCode="en-CA"></typ:Context> <typ:CollectorNumber>50000</typ:CollectorNumber> </GetCollectorProfiles> </soapenv:Body> </soapenv:Envelope>
닫는 태그를 제거하려면 XML의 원리를 이해하는 것이 중요합니다. XML에서 내용이 없는 요소는 빈 요소 태그(예:
문서에 따르면 인코딩/xml 패키지는 속성이 있는 요소에 종료 태그를 사용하고 속성이 없는 요소에 빈 요소 태그를 사용합니다.
일관성을 위해 빈 요소 태그를 사용하는 것이 바람직해 보일 수도 있지만 XML 유효성 측면에서 두 형식 간에 기능적 차이는 없습니다. 두 방법 모두 XML 사양을 준수하는 동등한 XML 문서를 생성합니다.
따라서 인코딩/xml 패키지가 속성이 있는 요소에 대해 빈 요소 태그를 사용하도록 강제하는 것은 권장되지 않습니다. 대신, 패키지의 표준 동작에 따라 이러한 요소가 종료 태그로 렌더링된다는 사실을 받아들이세요.
위 내용은 Go\의 `encoding/xml` 패키지에서 태그를 닫지 않고 XML 요소를 생성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!