ホームページ >バックエンド開発 >Golang >エンコーディング/xml パッケージによって提供される関数を使用して、XML をエンコードおよびデコードし、インデント形式と名前空間を設定します。

エンコーディング/xml パッケージによって提供される関数を使用して、XML をエンコードおよびデコードし、インデント形式と名前空間を設定します。

PHPz
PHPzオリジナル
2023-07-25 11:45:16804ブラウズ

encoding/xml パッケージで提供される関数を使用して XML をエンコードおよびデコードし、インデント形式と名前空間を設定します。

XML (eXtensible Markup Language) は、データ言語の記述、送信、保存に使用されるマークアップとして使用されます。幅広い用途に対応します。 Go 言語では、encoding/xml パッケージによって提供される関数を使用して、XML をエンコードおよびデコードできます。この記事では、XML エンコードとデコードに encoding/xml パッケージを使用する方法を紹介し、インデント形式と名前空間を設定する方法を示します。

XML データのエンコード
XML エンコードは、データを XML 形式に変換するプロセスです。 Go 言語では、構造オブジェクトを作成し、それを XML に変換することでこれを実現できます。具体的な手順は次のとおりです:

  1. XML データ構造の定義
    最初に、 XML としてエンコードされるデータを格納するために使用される構造体。構造体のフィールドでは、xml 構造体タグを使用して、タグ名とその他の属性を XML で指定する必要があります。
type Person struct {
    XMLName xml.Name `xml:"person"`
    Name    string   `xml:"name"`
    Age     int      `xml:"age"`
}

上記の例では、Person 構造には NameAge という 2 つのフィールドがあり、それぞれ XML に保存されます。タグ名として nameage を付けて表示します。

  1. XML データのエンコード
    構造を定義した後、構造オブジェクトを XML 形式の文字列に変換できます。 MarshalIndent 関数を使用すると、インデント形式を設定できます。このうち、最初のパラメータは XML データを書き込むための io.Writer インターフェイス、2 番目のパラメータは XML のルート ノードです。
package main

import (
    "encoding/xml"
    "fmt"
    "os"
)

type Person struct {
    XMLName xml.Name `xml:"person"`
    Name    string   `xml:"name"`
    Age     int      `xml:"age"`
}

func main() {
    person := Person{
        Name: "Alice",
        Age:  30,
    }

    xmlData, err := xml.MarshalIndent(person, "", "  ")
    if err != nil {
        fmt.Println("XML encoding error:", err)
        return
    }

    os.Stdout.Write([]byte(xml.Header))
    os.Stdout.Write(xmlData)
}

上記のコードを実行すると、次の XML データが出力されます。

<?xml version="1.0" encoding="UTF-8"?>
<person>
  <name>Alice</name>
  <age>30</age>
</person>

XML データのデコード
XML データのデコードとは、XML 形式の文字列を対応するデータに変換することです。構造。 Go 言語では、構造オブジェクトを作成し、Unmarshal 関数を呼び出すことでこれを実現できます。具体的な手順は次のとおりです:

  1. XML データ構造を定義する
    まず、XML データをデコードした結果を格納するために使用される構造体を定義する必要があります。同様に、構造内のフィールドでは、xml 構造タグを使用して、タグ名とその他の属性を XML で指定する必要があります。
type Person struct {
    XMLName xml.Name `xml:"person"`
    Name    string   `xml:"name"`
    Age     int      `xml:"age"`
}
  1. XML データのデコード
    構造を定義した後、XML 形式の文字列を構造オブジェクトにデコードできます。 Unmarshal 関数を使用すると、バイト スライスまたは io.Reader インターフェイスから XML データを解釈できます。
package main

import (
    "encoding/xml"
    "fmt"
    "strings"
)

type Person struct {
    XMLName xml.Name `xml:"person"`
    Name    string   `xml:"name"`
    Age     int      `xml:"age"`
}

func main() {
    xmlData := `
        
            Alice
            30
        
    `

    person := Person{}
    err := xml.Unmarshal([]byte(xmlData), &person)
    if err != nil {
        fmt.Println("XML decoding error:", err)
        return
    }

    fmt.Println(person.Name)
    fmt.Println(person.Age)
}

上記のコードを実行すると、次の結果が出力されます:

Alice
30

名前空間を設定します
名前空間 (名前空間) は、要素名と属性名の競合を避けるために XML で使用されます。機構。 Go 言語のエンコーディング/xml パッケージでは、構造体のフィールドで xml:"namespace-prefix:tagname" を使用して名前空間を設定できます。

type Person struct {
    XMLName xml.Name `xml:"namespace-prefix:person"`
    Name    string   `xml:"name"`
    Age     int      `xml:"age"`
}

上記の例では、person 要素の名前は namespace-prefix:person になります。ここで、namespace-prefix は名前空間のプレフィックス。

概要
encoding/xml パッケージが提供する関数を使用して、XML を簡単にエンコードおよびデコードできます。サンプル コードを通じて、encoding/xml パッケージを使用して XML をエンコードおよびデコードし、インデント形式と名前空間を設定する方法を学びました。 XML データのエンコードとデコードは、API リクエストの処理、設定ファイルの解析、その他のシナリオで重要な役割を果たし、Go 言語開発者に利便性をもたらします。

以上がエンコーディング/xml パッケージによって提供される関数を使用して、XML をエンコードおよびデコードし、インデント形式と名前空間を設定します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。