1790
|
1 require "java"
|
|
2 local XmlParser = require "java:goodjava.xml.XmlParser"
|
|
3 local XmlElement = require "java:goodjava.xml.XmlElement"
|
|
4 local Luan = require "luan:Luan.luan"
|
|
5 local error = Luan.error
|
|
6 local set_metatable = Luan.set_metatable or error()
|
|
7
|
|
8
|
|
9 local Xml = {}
|
|
10
|
|
11 Xml.encode = XmlElement.encode
|
|
12
|
|
13 local function new(java,mt)
|
|
14 local t = {}
|
|
15 t.java = java
|
|
16 set_metatable(t,mt)
|
|
17 return t
|
|
18 end
|
|
19
|
|
20 local element_mt = {}
|
|
21
|
|
22 local xml_mt = {}
|
|
23 function xml_mt.__index(xml,key)
|
|
24 if key == "element" then
|
|
25 return new( xml.java.element, element_mt )
|
|
26 end
|
|
27 if key == "declaration" then
|
|
28 return xml.java.declaration
|
|
29 end
|
|
30 return nil
|
|
31 end
|
|
32 function xml_mt.__new_index(xml,key,value)
|
|
33 if key == "element" then
|
|
34 xml.java.setElement( value.java )
|
|
35 elseif key == "declaration" then
|
|
36 xml.java.declaration = value
|
|
37 else
|
|
38 error("invalid key: "..key)
|
|
39 end
|
|
40 end
|
|
41 function xml_mt.__to_string(xml)
|
|
42 return xml.java.toString()
|
|
43 end
|
|
44
|
|
45 function Xml.parse(text)
|
|
46 return new( XmlParser.parse(text), xml_mt )
|
|
47 end
|
|
48
|
|
49 return Xml
|