Golang における XML シリアル化と逆シリアル化の方法とアプリケーション
Golang では、XML は、異なるシステム間でデータの転送と保存に使用される一般的に使用されるデータ形式です。 XML データを処理するときは、通常、シリアル化および逆シリアル化操作を実行して、データを XML 形式に変換するか、XML 形式からデータを読み取る必要があります。
この記事では、Golang の XML シリアル化および逆シリアル化メソッドを紹介し、具体的なコード例を示します。
1. XML シリアル化
XML シリアル化は、データを XML 形式に変換するプロセスです。 Golang では、encoding/xml パッケージを使用して XML シリアル化操作を実装できます。
まず、シリアル化するデータ構造を定義する構造を作成する必要があります。構造内のフィールドに xml
タグを追加して、XML 要素の名前と属性を指定する必要があります。
たとえば、個人の情報を表す Person 構造体を作成します:
type Person struct { XMLName xml.Name `xml:"person"` Name string `xml:"name"` Age int `xml:"age"` }
次に、xml を使用できます。 () 関数は、構造データを XML 形式にシリアル化します。
func main() { person := Person{ Name: "Alice", Age: 20, } xmlData, err := xml.MarshalIndent(person, "", " ") if err != nil { log.Fatal(err) } fmt.Println(string(xmlData)) }
上記のコードでは、xml.MarshalIndent() 関数を呼び出して person 構造をシリアル化し、シリアル化するオブジェクトと各 XML 要素のプレフィックスとインデントの 2 つのパラメータを渡します。
出力結果は次のとおりです:
<person> <name>Alice</name> <age>20</age> </person>
2. XML デシリアライズ
XML デシリアライズとは、XML 形式のデータを Golang のデータ構造に変換することです。これは、encoding/xml パッケージを使用して実装することもできます。
まず、解析されたデータを保存するための XML 形式に一致する構造を作成する必要があります。
XML の要素に対応する構造フィールドには、xml
タグを追加して、フィールドと XML 要素の名前および属性の間のマッピング関係を指定する必要があります。
たとえば、次の XML データを使用して説明します:
<person> <name>Alice</name> <age>20</age> </person>
対応する構造は次のように定義されます:
type Person struct { XMLName xml.Name `xml:"person"` Name string `xml:"name"` Age int `xml:"age"` }
func main() { xmlData := []byte(` <person> <name>Alice</name> <age>20</age> </person> `) var person Person err := xml.Unmarshal(xmlData, &person) if err != nil { log.Fatal(err) } fmt.Printf("Name: %s Age: %d ", person.Name, person.Age) }
& 演算子を使用して person 構造体のポインターを取得します。その値を変更します。
Name: Alice Age: 20
func handleRequest(w http.ResponseWriter, r *http.Request) { person := Person{ Name: "Alice", Age: 20, } xmlData, err := xml.MarshalIndent(person, "", " ") if err != nil { log.Fatal(err) } w.Header().Set("Content-Type", "application/xml") w.Write(xmlData) }
以上がGolang での XML データのエンコードおよびデコード方法とその応用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。