结构定义如下,在tag中写明在xml中的映射关系。可以是子节点,也可以是属性,还可以是chardata。当然,结构的成员必须是大写字母打头的,对外可见。多层节点可以用大于号连接,如“onentry>action”。用chardata时,tag为`xml:”,chardata”`。
// state machine for unmarshal json
type stateMachine struct {
Defaultstate bool `xml:"defaultstate,attr"`
Initialstate string `xml:"initialstate,attr"`
Timeoutstate string `xml:"timeoutstate,attr"`
States []state `xml:"state"`
}
// state for unmarshal json
type state struct {
Id string `xml:"id,attr"`
Timeout float64 `xml:"timeout,attr"`
Onentry []action `xml:"onentry"`
Onexit []action `xml:"onexit"`
Transitions []transition `xml:"transition"`
}
// action for unmarshal json
type action struct {
Name string `xml:"name,attr"`
Paras []Any
ParasXML []string `xml:"para"` // for xml
}
// transition for unmarshal json
type transition struct {
Event string `xml:"event,attr"`
Cond string `xml:"cond,attr"`
Target string `xml:"target,attr"`
}
有疑问加站长微信联系(非本文作者)