Mercurial Hosting > luan
comparison src/luan/modules/parsers/Xml.java @ 1790:a8c685a894b4
start xml work
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Mon, 25 Dec 2023 23:07:59 -0700 |
parents | 8fbcc4747091 |
children |
comparison
equal
deleted
inserted
replaced
1789:bac27b119ff2 | 1790:a8c685a894b4 |
---|---|
50 return list.toArray(new XmlElement[0]); | 50 return list.toArray(new XmlElement[0]); |
51 } | 51 } |
52 | 52 |
53 private static XmlElement element(String name,Object obj) throws LuanException { | 53 private static XmlElement element(String name,Object obj) throws LuanException { |
54 if( obj instanceof String ) { | 54 if( obj instanceof String ) { |
55 return new XmlElement( name, Collections.emptyMap(), (String)obj ); | 55 XmlElement element = new XmlElement( name, Collections.emptyMap() ); |
56 element.setContent( (String)obj ); | |
57 return element; | |
56 } | 58 } |
57 LuanTable t = (LuanTable)obj; | 59 LuanTable t = (LuanTable)obj; |
58 Map<String,String> attributes = attributes(t); | 60 Map<String,String> attributes = attributes(t); |
59 String s = (String)t.rawGet(TEXT); | 61 String s = (String)t.rawGet(TEXT); |
60 if( s != null ) { | 62 if( s != null ) { |
61 return new XmlElement(name,attributes,s); | 63 XmlElement element = new XmlElement(name,attributes); |
64 element.setContent(s); | |
65 return element; | |
62 } else { | 66 } else { |
63 XmlElement[] elements = elements(t); | 67 XmlElement[] elements = elements(t); |
64 if( elements.length==0 ) { | 68 if( elements.length==0 ) { |
65 return new XmlElement(name,attributes); | 69 return new XmlElement(name,attributes); |
66 } else { | 70 } else { |
67 return new XmlElement(name,attributes,elements); | 71 XmlElement element = new XmlElement(name,attributes); |
72 element.setContent(elements); | |
73 return element; | |
68 } | 74 } |
69 } | 75 } |
70 } | 76 } |
71 | 77 |
72 private static Map<String,String> attributes(LuanTable tbl) throws LuanException { | 78 private static Map<String,String> attributes(LuanTable tbl) throws LuanException { |
83 return map; | 89 return map; |
84 } | 90 } |
85 | 91 |
86 | 92 |
87 public static LuanTable parse(String s) throws ParseException, LuanException { | 93 public static LuanTable parse(String s) throws ParseException, LuanException { |
88 XmlElement element = XmlParser.parse(s); | 94 XmlElement element = XmlParser.parse(s).getElement(); |
89 LuanTable tbl = new LuanTable(); | 95 LuanTable tbl = new LuanTable(); |
90 addElements(tbl,new XmlElement[]{element}); | 96 addElements(tbl,new XmlElement[]{element}); |
91 return tbl; | 97 return tbl; |
92 } | 98 } |
93 | 99 |
99 for( Map.Entry<String,String> entry : element.attributes.entrySet() ) { | 105 for( Map.Entry<String,String> entry : element.attributes.entrySet() ) { |
100 attrs.rawPut(entry.getKey(),entry.getValue()); | 106 attrs.rawPut(entry.getKey(),entry.getValue()); |
101 } | 107 } |
102 t.rawPut( ATTRIBUTES, attrs ); | 108 t.rawPut( ATTRIBUTES, attrs ); |
103 } | 109 } |
104 if( element.content == null ) { | 110 Object content = element.getContent(); |
111 if( content == null ) { | |
105 // nothing | 112 // nothing |
106 } else if( element.content instanceof String ) { | 113 } else if( content instanceof String ) { |
107 t.rawPut( TEXT, element.content ); | 114 t.rawPut( TEXT, content ); |
108 } else { | 115 } else { |
109 XmlElement[] els = (XmlElement[])element.content; | 116 XmlElement[] els = (XmlElement[])content; |
110 addElements(t,els); | 117 addElements(t,els); |
111 } | 118 } |
112 LuanTable old = (LuanTable)tbl.rawGet(element.name); | 119 LuanTable old = (LuanTable)tbl.rawGet(element.name); |
113 if( old==null ) { | 120 if( old==null ) { |
114 tbl.rawPut(element.name,t); | 121 tbl.rawPut(element.name,t); |