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.
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