Die Aufgabe, XML-Dokumente aus Go-Strukturen zu erstellen, kann eine Herausforderung darstellen, insbesondere beim Umgang mit unterschiedlichen Elementnamen. Es stellt sich die Frage: Können wir eine Go-Struktur definieren, die dynamische Elementnamen während des XML-Marshalling-Prozesses zulässt?
Die Go-Dokumentation besagt, dass das XMLName-Feld in einer Struktur vom Typ xml.Name und nicht von einer Zeichenfolge sein muss. Diese Struktur enthält zwei Felder: „Space“ und „Local“. Um einen dynamischen Elementnamen festzulegen, ändern Sie das Feld „Lokal“ im Typ xml.Name.
type Person struct { XMLName xml.Name E1 string `xml:"ELEM1"` // ... }
In diesem Beispiel verwenden wir Sie erhalten eine Struktur mit dem Elementnamen „Person“ oder „Sender“, basierend auf dem in XMLName.Local gespeicherten Wert Feld.
import ( "encoding/xml" "fmt" ) type Person struct { XMLName xml.Name E1 string `xml:"ELEM1"` // ... } func main() { person := Person{XMLName: xml.Name{Local: "Person"}, E1: "Value1"} sender := Person{XMLName: xml.Name{Local: "Sender"}, E1: "Value1"} // Marshal the struct into XML personXML, _ := xml.Marshal(person) senderXML, _ := xml.Marshal(sender) fmt.Println(string(personXML)) fmt.Println(string(senderXML)) }
Dieses Beispiel erzeugt zwei unterschiedliche XML-Dokumente, eines mit dem Elementnamen „Person“ und das andere mit dem Elementnamen „Sender“.
Eine interaktive Version dieses Beispiels finden Sie auf dem Go Playground: http://play.golang.org/p/bzSutFF9Bo
Das obige ist der detaillierte Inhalt vonWie kann ich XML-Elemente mit dynamischen Namen in Go marshalieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!