自定義腳本語言引擎開發紀實 -保存xml格式數據

保存xml格式數據(即:object轉爲xml格式字符串)


按上文的例子【接上文

object轉xml

上個例子,我們把xml字符串轉爲了object
這個例子,我們再把object轉成xml

示例代碼

xmlDoc="<Doc><product id=\"10236\"/><combo id=\"50789\"/><Ele><item cs=\"天黑.css\">項目1</item><item cs=\"落日.css\">項目2</item></Ele></Doc>"

xml=js.xml.parse(xmlDoc)
//object 屬性名區分大小寫
js.debug.log("[script] 解析sid子節點的元素");
js.debug.log("[script] " + xml.Doc.product.id);
js.debug.log("[script] " + xml.Doc.combo.id);


js.debug.log("[script] 遍歷Ele節點元素");
items=xml.Doc.Ele
foreach(k,v in items)
	js.debug.log("[script] " + k + " " + v.cs + " "  + v.self$data);
end

xmlstr=js.xml.archive(xml)

js.debug.p("xmlstr")

運行結果:

[31116] [script] 解析sid子節點的元素
[31116] [script] 10236
[31116] [script] 50789
[31116] [script] 遍歷Ele節點元素
[31116] [script] item 天黑.css 項目1
[31116] [script] item 落日.css 項目2
[31116] [script][dump var][from global]xmlstr:<Doc><sid><product id="10236"/><combo id="50789"/></sid><Ele><item cs="天黑.css">項目1</item><item cs="落日.css">項目2</item></Ele></Doc> (exist:1)

演示手動構造object,並轉爲xml

構造object代碼

//self$data標記xml的data字段,其他的都是xml的屬性字段
kv={files={item={name="1.txt",size=1000,crc="1111111"},item={name="2.txt",size=2000,crc="22222222"},item={name="3.txt",size=3000,crc="333333"},self$data="文件列表"}, signs={sign1={shal="123dafea"}, sign1={md5="md5dcdemd5"}}}
//訪問裏面的元素(打印log)
js.debug.log("script " + kv.signs.sign1.shal + " " + " " + kv.files[1].name);

輸出結果:

[28676] script 123dafea  2.txt

上述k-v對轉成xml的代碼

//self$data標記xml的data字段,其他的都是xml的屬性字段
kv={files={item={name="1.txt",size=1000,crc="1111111"},item={name="2.txt",size=2000,crc="22222222"},item={name="3.txt",size=3000,crc="333333"},self$data="文件列表"}, signs={sign1={shal="123dafea"}, sign1={md5="md5dcdemd5"}}}
//訪問裏面的元素
js.debug.log("script " + kv.signs.sign1.shal + " " + " " + kv.files[1].name);

xml=js.xml.archive(kv, "doc")

js.debug.p("xml")

輸出結果:

[28676] script 123dafea  2.txt
[28676] <doc><files><item name="1.txt" size="1000" crc="1111111"/><item name="2.txt" size="2000" crc="22222222"/><item name="3.txt" size="3000" crc="333333"/>文件列表</files><signs><sign1 shal="123dafea"/><sign1 md5="md5dcdemd5"/></signs></doc>


至此:xml的解析和編碼完畢(object跟lua中的table有很多類似)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章