go解析XML会遵循以下原则:
- 如果struct的一个字段是string或者[]byte类型且它的tag含有",innerxml",Unmarshal将会将此字段所对应的元素内所有内嵌的原始xml累加到此字段上
- 如果struct中有一个叫做XMLName,且类型为xml.Name字段,那么在解析的时候就会保存这个element的名字到该字段
- 如果某个struct字段的tag定义中含有XML结构中element的名称,那么解析的时候就会把相应的element值赋值给该字段
- 如果某个struct字段的tag定义了中含有",attr",那么解析的时候就会将该结构所对应的element的与字段同名的属性的值赋值给该字段
- 如果某个struct字段的tag定义 型如"a>b>c",则解析的时候,会将xml结构a下面的b下面的c元素的值赋值给该字段
- 如果某个struct字段的tag定义了"-",那么不会为该字段解析匹配任何xml数据
- 如果struct字段后面的tag定义了",any",如果他的子元素在不满足其他的规则的时候就会匹配到这个字段
- 如果某个XML元素包含一条或者多条注释,那么这些注释将被累加到第一个tag含有",comments"的字段上,这个字段的类型可能是[]byte或string,如果没有这样的字段存在,那么注释将会被抛弃