Go で終了タグを使用せずに XML 要素を作成する
このシナリオでは、ネストされた要素を含む XML エンベロープを表すネストされた Go 構造体があります。 .
// TierRequest is the outer most XML envelope of soap request type TierRequest struct { XMLName xml.Name `xml:"soapenv:Envelope"` NsEnv string `xml:"xmlns:soapenv,attr"` NsType string `xml:"xmlns:typ,attr"` Header string `xml:"soapenv:Header"` Body TierBody `xml:"soapenv:Body"` } // TierBody is an emtpy container with the GetCollectorProfile struct type TierBody struct { GetCollectorProfiles GetCollectorProfile `Collectorxml:"typ:GetCollectorProfileRequest"` } // GetCollectorProfile struct has the context and collector number type GetCollectorProfile struct { Contexts CollectorContext `xml:"typ:Context"` Number int `xml:"typ:CollectorNumber"` } // CollectorContext contanins a few variables as attributes type CollectorContext struct { Channel string `xml:"Channel,attr"` Source string `xml:"Source,attr"` Language string `xml:"LanguageCode,attr"` }
encoding/xml を使用してこの構造体を XML にマーシャリングしますが、soapenv:Header と typ:Context の終了タグを削除して、
空の要素タグは、コンテンツのない要素の終了タグと機能的に同等であるため、これら 2 つの形式の間に XML レベルの違いはありません。言い換えれば、XML の内容はどちらの場合も同じです:
<soapenv:Header></soapenv:Header>
<soapenv:Header/>
したがって、標準 XML を使用して空の要素タグと終了タグの使用を制御することはできません。テクニック。
以上がGo でタグを閉じずに XML 要素を作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。