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);