Maison > développement back-end > Golang > le corps du texte

Comment désorganiser les attributs XML avec des attributs inconnus dans Go ?

DDD
Libérer: 2024-11-25 02:30:10
original
136 Les gens l'ont consulté

How to Unmarshal XML Attributes with Unknown Attributes in Go?

Désagrégation des attributs XML avec des attributs inconnus dans Go

Dans Go, le package encoding/xml nous permet de rassembler et de désorganiser les données XML dans et à partir des structures de données Go. Cependant, par défaut, il ne prend en charge que la désorganisation des balises XML avec des attributs fixes connus à l'avance.

Attributs dynamiques en XML

Dans certains cas, les documents XML peuvent avoir des balises avec des attributs dynamiques qui ne sont pas connus à l’avance. Cela peut poser un défi lors de la désorganisation de ces données XML dans des structures Go.

Désorganisation des attributs dynamiques

Depuis fin 2017, Go prend en charge la désorganisation des balises XML avec des attributs dynamiques à l'aide de l'option xml:",any,attr" directive de balise. Cette directive demande au démarshaler de collecter tous les attributs dans la tranche xml.Attr.

Exemple :

package main

import (
    "encoding/xml"
    "fmt"
)

func main() {
    var v struct {
        Attributes []xml.Attr `xml:",any,attr"`
    }

    data := `<TAG ATTR1="VALUE1" ATTR2="VALUE2" />`

    err := xml.Unmarshal([]byte(data), &v)
    if err != nil {
        panic(err)
    }
    fmt.Println(v)
}
Copier après la connexion

Lorsque le code ci-dessus est exécuté, il imprimera :

{
  Attributes: [
    {Name:ATTR1 Value:VALUE1}
    {Name:ATTR2 Value:VALUE2}
  ]
}
Copier après la connexion

Remarque :

Le La directive xml:",any,attr" ne collecte pas les attributs des balises imbriquées. Si vous devez collecter des attributs à partir de balises imbriquées, vous devrez créer un décodeur XML personnalisé.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal