Dynamische Elementnamen beim XML-Marshalling
XML-Dokumente enthalten häufig Elemente mit ähnlichen Strukturen, aber unterschiedlichen Namen. Um dies in Go zu handhaben, fragen Sie sich vielleicht, ob es möglich ist, den Elementnamen während des XML-Marshallings dynamisch zu ändern.
Strukturdefinition
Betrachten wir das folgende XML-Dokument mit zwei Elemente „PERSON“ und „SENDER“, die dieselben Elemente mit unterschiedlichen Namen enthalten:
<PERSON> <ELEM1>...</ELEM1> <ELEM2>...</ELEM2> <ELEM3>...</ELEM3> <ELEM4>...</ELEM4> </PERSON> <SENDER> <ELEM1>...</ELEM1> <ELEM2>...</ELEM2> <ELEM3>...</ELEM3> <ELEM4>...</ELEM4> </SENDER>
Zunächst könnten Sie es versuchen Definieren Sie eine Struktur wie diese, in der der Elementname statisch festgelegt wird:
type Person struct { XMLName string `xml:"PERSON"` // Static element name E1 string `xml:"ELEM1"` E2 string `xml:"ELEM2"` E3 string `xml:"ELEM3"` E4 string `xml:"ELEM4"` }
Dynamischer Elementname
Um den Elementnamen dynamisch zu machen, müssen Sie verwenden xml.Name-Typ anstelle einer Zeichenfolge:
type Person struct { XMLName xml.Name E1 string `xml:"ELEM1"` E2 string `xml:"ELEM2"` E3 string `xml:"ELEM3"` E4 string `xml:"ELEM4"` }
Jetzt können Sie den Elementnamen dynamisch mithilfe des Feldes „Lokal“ festlegen xml.Name:
person := Person{ XMLName: xml.Name{Local: "Person"}, // ... Set other fields }
Damit können Sie den XML-Elementnamen basierend auf den spezifischen Daten, die Sie marshallieren, dynamisch generieren.
Beispiel
Ein funktionierendes Beispiel finden Sie auf dem Go Playground: http://play.golang.org/p/bzSutFF9Bo.
Mit dieser Technik können Sie Strukturen erstellen, die XML-Elemente mit unterschiedlichen Namen verarbeiten und so Flexibilität und Erweiterbarkeit in Ihrem XML-Verarbeitungscode bieten.
Das obige ist der detaillierte Inhalt vonWie kann ich XML-Elementnamen beim Marshaling in Go dynamisch festlegen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!