"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo descomponer XML con atributos dinámicos en Go?

¿Cómo descomponer XML con atributos dinámicos en Go?

Publicado el 2024-11-18
Navegar:268

How to Unmarshal XML with Dynamic Attributes in Go?

Golang: desglosando XML con atributos dinámicos

Introducción:
En Go, encoding/xml proporciona una manera eficiente y versátil de manejar datos XML. Sin embargo, cuando se trata de elementos XML que poseen atributos dinámicos, desclasificar se vuelve un desafío debido al número desconocido y los tipos de atributos presentes.

Pregunta:
¿Cómo se pueden desclasificar etiquetas XML con atributos dinámicos en Go cuando no anticipa los atributos exactos que se encontrarán?

Respuesta:
Antes de tarde 2017, esto no fue compatible directamente con la descomposición XML de Go. Sin embargo, con los avances en el paquete encoding/xml, se ha implementado esta funcionalidad.

Para descomponer etiquetas XML con atributos dinámicos, puede utilizar la siguiente sintaxis:

type MyStruct struct {
    Attributes []xml.Attr `xml:",any,attr"`
}

Aquí hay un ejemplo para ilustrar cómo funciona:

package main

import (
    "encoding/xml"
    "fmt"
)

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

    data := ``

    var v MyStruct

    if err := xml.Unmarshal([]byte(data), &v); err != nil {
        panic(err)
    }

    fmt.Println(v.Attributes)
}

En este ejemplo, el tipo MyStruct define un campo llamado Atributos. La etiqueta xml:"...,any,attr" indica al desclasificador que asigne cualquier atributo XML a este campo como porciones xml.Attr.

Cuando el desclasificador encuentra los datos XML proporcionados en la variable de datos, descompone con éxito los atributos desconocidos (ATTR1 y ATTR2) en el campo Atributos de la estructura v. Esto permite el manejo dinámico de elementos XML con diferentes conjuntos de atributos.

Tenga en cuenta que esta función requiere Go versión 1.9 o posterior.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3