Content-Type: "text/xml"
Extensible Markup Language (XML) is a markup language that defines a set of rules for encoding documents in a format that is both human-readable and machine-readable.
The Context.XML(v, ...opts)
is the method which sends XML responses to the client. It accepts the value and optional settings for rendering. The XML
options structure looks like this:
type XML struct {
Indent string
Prefix string
}
If
Indent
field is empty and the application runs without optimizations, theIndent
field will be automatically set to2 spaces
.
Render a Go struct as XML response:
type ExampleXML struct {
XMLName xml.Name `xml:"example"`
One string `xml:"one,attr"`
Two string `xml:"two,attr"`
}
func handler(ctx iris.Context) {
response := ExampleXML{One: "hello", Two: "xml"}
ctx.XML(response)
}
Result
<example one="hello" two="xml"/>
You can NOT provide a raw map
or iris.Map
on context.XML
because the value should complete the xml.Marshaler interface. Iris has the iris.XMLMap
which converts a map
(or iris.Map
) to xml Marshaler. That helper function accepts the root level name and a map. Example:
func handler(ctx iris.Context) {
kv := iris.Map{"key": "value"}
response := iris.XMLMap("keys", kv)
ctx.XML(response, iris.XML{Indent: " "})
}
Result
<keys>
<key>value</key>
</keys>
References: