GolangでSOAPメッセージにsoapenvを追加する方法


SOAPメッセージをマーシャリング(XML形式に変換)する際に、soapenv要素を追加するには以下の手順を実行します。

  1. SOAPメッセージのデータ構造を定義するGoの構造体を作成します。例えば、以下のような構造体を考えましょう。
type Envelope struct {
    XMLName xml.Name `xml:"soapenv:Envelope"`
    Body    Body     `xml:"soapenv:Body"`
}
type Body struct {
    XMLName xml.Name `xml:"soapenv:Body"`
    // 他の要素やデータフィールドを定義することもできます
}
  1. マーシャリングする前に、SOAPメッセージのルート要素にsoapenvの名前空間を追加します。これにより、生成されるXMLにsoapenv要素が含まれるようになります。
env := Envelope{}
env.XMLName = xml.Name{
    Local: "Envelope",
    Space: "http://schemas.xmlsoap.org/soap/envelope/",
}
  1. オプションとして、必要に応じて他の要素やデータフィールドを構造体に追加します。これらの要素はSOAPメッセージのボディ部分に含まれます。

  2. マーシャリングを行います。以下のようにxml.Marshal()関数を使用してSOAPメッセージをXML形式に変換します。

xmlData, err := xml.Marshal(env)
if err != nil {
    // エラーハンドリング
}

これでSOAPメッセージにsoapenv要素が追加されたXMLデータがxmlDataに格納されます。