自定义脚本语言引擎开发纪实 -保存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有很多类似)

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