ホームページ  >  記事  >  バックエンド開発  >  Go 言語の XML 処理関数を使用して XML ファイルを解析し、ノードをフィルタリングする方法は?

Go 言語の XML 処理関数を使用して XML ファイルを解析し、ノードをフィルタリングする方法は?

WBOY
WBOYオリジナル
2023-07-31 22:30:321036ブラウズ

Go 言語で XML 処理関数を使用して XML ファイルを解析し、ノードをフィルター処理する方法は?

Go 言語では、標準ライブラリ encoding/xml を使用して XML ファイルを処理できます。 encoding/xml XML ファイルを迅速に解析し、必要に応じて必要なノードをフィルタリングするのに役立つ一連の関数と構造を提供します。この記事では、Go 言語の XML 処理関数を使用して XML ファイルを解析し、ノードをフィルター処理する方法と、対応するコード例を紹介します。

まず、encoding/xml パッケージをインポートする必要があります:

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

パス ./data.xml## の XML ファイルがあると仮定します。 #、XML ファイルの内容は次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <person>
        <name>张三</name>
        <age>25</age>
    </person>
    <person>
        <name>李四</name>
        <age>30</age>
    </person>
    <person>
        <name>王五</name>
        <age>35</age>
    </person>
</root>

まず、解析された XML データを保存するための構造を定義する必要があります。各

0833d296851a1e081f2175a4cbfa7135 ノードを Person 構造に解析するとします。

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

次に、

xml.Unmarshal() The を使用できます。この関数は XML ファイルを構造スライスに解析します。コードは次のとおりです:

func main() {
    file, err := os.Open("./data.xml")
    if err != nil {
        fmt.Println("打开文件失败:", err)
        return
    }
    defer file.Close()

    data, err := ioutil.ReadAll(file)
    if err != nil {
        fmt.Println("读取文件失败:", err)
        return
    }

    var persons []Person
    err = xml.Unmarshal(data, &persons)
    if err != nil {
        fmt.Println("解析XML文件失败:", err)
        return
    }

    fmt.Println(persons)
}

上記のコードを実行すると、次のような出力が表示されます:

[{张三 25} {李四 30} {王五 35}]

次に、必要に応じてフィルタリングできます。特定のノードから。たとえば、30 歳以上の人々に関する情報のみを取得したい場合は、次のコードを使用できます:

func main() {
    file, err := os.Open("./data.xml")
    if err != nil {
        fmt.Println("打开文件失败:", err)
        return
    }
    defer file.Close()

    data, err := ioutil.ReadAll(file)
    if err != nil {
        fmt.Println("读取文件失败:", err)
        return
    }

    var persons []Person
    err = xml.Unmarshal(data, &persons)
    if err != nil {
        fmt.Println("解析XML文件失败:", err)
        return
    }

    var filteredPersons []Person
    for _, person := range persons {
        if person.Age >= 30 {
            filteredPersons = append(filteredPersons, person)
        }
    }

    fmt.Println(filteredPersons)
}

上記のコードを実行すると、次のような出力が表示されます:

[{李四 30} {王五 35}]

上記のコード例を通じて、Go 言語の XML 処理関数を使用して XML ファイルを解析し、必要なノードをフィルターで除外する方法がわかります。実際のニーズに応じてコードを変更し、より複雑な XML 解析およびフィルタリング操作を実行できます。

以上がGo 言語の XML 処理関数を使用して XML ファイルを解析し、ノードをフィルタリングする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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