天天看點

golang xml序列化和反序列化

基于 encoding/xml

示例代碼

** 作為字段的标簽說明: **

帶有 “-” 标簽的字段會被忽略

帶有 “name,attr” 标簽的字段會成為 xml 元素的屬性, 其中屬性的名字為這裡給定的 name

帶有 “,attr” 标簽的字段會成為 xml 元素的屬性, 其中屬性的名字為字段的名字

帶有 “,chardata” 标簽的字段将會被封裝為字元資料而不是 xml 元素。

帶有 “,cdata” 标簽的字段将會被封裝為字元資料而不是 xml 元素, 并且這些資料還會被一個或多個 <![cdata[ … ]]> 标簽包圍。

帶有 “,innerxml” 标簽的字段無需進行任何封裝, 它會以原樣進行輸出。

帶有 “,comment” 标簽的字段無需進行任何封裝, 它會直接輸出為 xml 注釋。 這個字段内部不能包含 “–” 字元串。

如果字段的标簽中包含 “omitempty” 選項, 那麼在字段的值為空時, 這個字段将被忽略。 空值指的是 false , 0 ,為 nil 的指針、接口值、數組、切片、map ,以及長度為 0 的字元串。

匿名結構字段會被看作是外層結構的其中一部分來處理。

字段可以使用類似 “a>b>c” 這樣的标簽來說明元素 c 被嵌套在父元素 a 和 b 裡面。 如果有多個字段緊挨在一起, 并且它們都擁有相同的父元素, 那麼這些字段對應的元素将被包裹在同一個 xml 元素裡面。