package main import ( "encoding/xml" ) // ProcessList is a map of processes' names and its statuses. type ProcessList map[string]bool // MarshalXML implements XML Marshaler interface for a ProcessList. func (l *ProcessList) MarshalXML(e *xml.Encoder, start xml.StartElement) error { if len(*l) == 0 { return nil } if err := e.EncodeToken(start); err != nil { return err } for key, val := range *l { e.Encode(struct { XMLName xml.Name Name string `xml:"name,attr"` IsUp bool `xml:",chardata"` }{ XMLName: xml.Name{Local: "Process"}, Name: key, IsUp: val}) } return e.EncodeToken(start.End()) }