Golang: desempacotando XML com atributos dinâmicos
Introdução:
No Go, encoding/xml fornece uma maneira eficiente e versátil de lidar com dados XML. No entanto, ao lidar com elementos XML que possuem atributos dinâmicos, a desempacotamento torna-se um desafio devido ao número desconhecido e aos tipos de atributos presentes.
Pergunta:
Como você pode desempacotar tags XML com atributos dinâmicos no Go quando você não prevê os atributos exatos que serão encontrados?
Resposta:
Antes do final de 2017, isso não era suportado diretamente na desempacotamento XML do Go. No entanto, com os avanços no pacote encoding/xml, essa funcionalidade foi implementada.
Para desempacotar tags XML com atributos dinâmicos, você pode usar a seguinte sintaxe:
type MyStruct struct { Attributes []xml.Attr `xml:",any,attr"` }
Aqui está um exemplo para ilustrar como 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) }
Neste exemplo, o tipo MyStruct define um campo chamado Atributos. A tag xml:"...,any,attr" instrui o desempacotador a atribuir quaisquer atributos XML a este campo como fatias xml.Attr.
Quando o desempacotador encontra os dados XML fornecidos na variável de dados, ele desempacota com êxito os atributos desconhecidos (ATTR1 e ATTR2) no campo Atributos da estrutura v. Isso permite o tratamento dinâmico de elementos XML com conjuntos de atributos variados.
Observe que esse recurso requer Go versão 1.9 ou posterior.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3