golang xml 處理動態屬性

2021-10-03 11:14:18 字數 1001 閱讀 9406

golang處理讀寫xml時,是和乙個結構體對應的。

因此,每個每個xml節點的屬性,都是結構體的字段,是定死的。

type student struct

type addr struct

gaofeng

sz

但是如果有些屬性是動態,比如

待解析/待生成的資料可能是資料1,也可能是資料2. 就是說myitem有哪些屬性,不是提前定死的。

資料1:

gaofeng

sz資料2:

gaofeng

sz

可以使用下面的**進行處理

package main

import (

"encoding/xml"

"fmt"

)type student struct

type addr struct

type item struct

func main() }

p.address.myitem = item{}

p.address.myitem.attributes = xml.attr{}

tt:=xml.attr, value:"vvv&11"}

tt=xml.attr, value:"vvv22"}

// 生成xml

buf, _ := xml.marshal(p)

fmt.println(string(buf))

// 解析xml

var s = `gaofengsz`

fmt.println(s)

pp := new(student)

xml.unmarshal(byte(s), pp)

fmt.println(pp.address.city)

fmt.println(pp.address.myitem.attributes[0].value)

}

例項屬性和方法的動態處理 getattr

正常情況下,當呼叫類的方法或屬性時,如果不存在,就會報錯 要避免這個錯誤,除了可以加上那個要呼叫但不存在的屬性外,python還有另乙個機制,那就是寫乙個 getattr 方法,動態返回乙個屬性 只有在沒有找到屬性的情況下,才呼叫 getattr 已有的屬性會直接在類屬性裡查詢,不會在 getatt...

動態繫結屬性

動態繫結屬性 dict 先看下面的 class a def init self,a,b,c,d,e self.a a self.b b self.c c self.d d self.e e p1 a 1,2,3,4,5 print dir p1 class delattr dict dir doc ...

動態屬性Form Bean

回到首頁 還是簡單認知,從原始的jsp,到後期簡單分層,再到現在通用的spring生態,有個演變過程。這些陳舊的框架或者技術已經廢棄不用了,但是過程還是有價值的。struts允許開發人員在配置檔案中宣告乙個form bean,而無須手工針對每乙個表單設計乙個form bean。步驟 配置乙個元素,將...