l'éditeur php Banana vous présentera la méthode de démarshalisation des balises XML numérotées en langage Go. Le langage Go fournit la fonction xml.Unmarshal, qui peut désassembler les données XML dans une structure Go. Lors du désorganisation, nous pouvons utiliser des balises pour spécifier la relation de mappage entre les éléments XML et les champs de structure. En ajoutant `xml:"tagname"` à la balise du champ de structure, nous pouvons associer des balises spécifiques en XML au champ de structure pour réaliser des opérations de démarshalling automatiques. Cette méthode est simple et efficace, rendant le traitement des données XML en langage Go facile et agréable.
J'ai essayé beaucoup de structures pour essayer de désorganiser ce XML mais je n'arrive pas vraiment à comprendre :
package main import ( "bytes" "encoding/xml" "fmt" ) type SettingContainer struct { XMLName xml.Name `xml:"Settings"` Settings []Setting `xml:",any"` } type Setting struct { XMLName xml.Name `xml:",any"` SettingRegisters []SettingRegister `xml:",any"` } type SettingRegister struct { XMLName xml.Name `xml:",any"` Value string `xml:"value,attr"` } func main() { var xmlData = bytes.NewBufferString(` <Settings> <Setting0> <Setting0_register value="0x20" /> <Setting0ArbitraryName value="0x0" /> </Setting0> <Setting1> <Setting1_register value="0x60" /> <Setting1WhateverEnable value="0x0" /> </Setting1> <Setting2> <Setting2_register value="0x80" /> <Setting2blahblah value="0x1" /> </Setting2> <Setting4> <Setting4_register value="0x2fffff8" /> <Setting4ThisCanBeAnything value="0x0" /> </Setting4> </Settings>`) var s []SettingContainer xml.Unmarshal(xmlData.Bytes(), &s) for _, i := range s { fmt.Println(i) } }
Je n’arrive tout simplement pas à imprimer quoi que ce soit. Les champs dont j'ai réellement besoin sont la valeur attr de settingsn_register et le nom de la balise settingsn. Comment puis-je désorganiser correctement le fichier XML dans ces champs ? Je pense créer une fonction de désorganisation personnalisée, mais je ne trouve pas vraiment comment en créer une correctement. Je reçois uniquement le nom de la balise "paramètres" de ce fichier XML.
De xmlname
字段中删除 xml:",any"
标记(这会导致解码器尝试将额外的子元素映射到此字段),并将其解组为 settingcontainer
而不是 []settingcontainer
En tant que document XML, il ne peut avoir qu'un seul élément racine. Exemple de travail ici : https://www.php.cn/link/d2949eb6aaa490c835219e945ff37dad
type SettingContainer struct { XMLName xml.Name `xml:"Settings"` Settings []Setting `xml:",any"` } type Setting struct { XMLName xml.Name SettingRegisters []SettingRegister `xml:",any"` } type SettingRegister struct { XMLName xml.Name Value string `xml:"value,attr"` } func main() { var xmlData = bytes.NewBufferString(`...`) var s SettingContainer xml.Unmarshal(xmlData.Bytes(), &s) fmt.Println(s) }
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!