Mercurial Hosting > luan
diff 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 |
line wrap: on
line diff
--- a/src/luan/modules/parsers/Xml.java Sun Dec 24 16:52:35 2023 -0700 +++ b/src/luan/modules/parsers/Xml.java Mon Dec 25 23:07:59 2023 -0700 @@ -52,19 +52,25 @@ private static XmlElement element(String name,Object obj) throws LuanException { if( obj instanceof String ) { - return new XmlElement( name, Collections.emptyMap(), (String)obj ); + XmlElement element = new XmlElement( name, Collections.emptyMap() ); + element.setContent( (String)obj ); + return element; } LuanTable t = (LuanTable)obj; Map<String,String> attributes = attributes(t); String s = (String)t.rawGet(TEXT); if( s != null ) { - return new XmlElement(name,attributes,s); + XmlElement element = new XmlElement(name,attributes); + element.setContent(s); + return element; } else { XmlElement[] elements = elements(t); if( elements.length==0 ) { return new XmlElement(name,attributes); } else { - return new XmlElement(name,attributes,elements); + XmlElement element = new XmlElement(name,attributes); + element.setContent(elements); + return element; } } } @@ -85,7 +91,7 @@ public static LuanTable parse(String s) throws ParseException, LuanException { - XmlElement element = XmlParser.parse(s); + XmlElement element = XmlParser.parse(s).getElement(); LuanTable tbl = new LuanTable(); addElements(tbl,new XmlElement[]{element}); return tbl; @@ -101,12 +107,13 @@ } t.rawPut( ATTRIBUTES, attrs ); } - if( element.content == null ) { + Object content = element.getContent(); + if( content == null ) { // nothing - } else if( element.content instanceof String ) { - t.rawPut( TEXT, element.content ); + } else if( content instanceof String ) { + t.rawPut( TEXT, content ); } else { - XmlElement[] els = (XmlElement[])element.content; + XmlElement[] els = (XmlElement[])content; addElements(t,els); } LuanTable old = (LuanTable)tbl.rawGet(element.name);