XML

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, the Indent field will be automatically set to 2 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:

Last updated