CDATA support to Data/XML 52/1352/2
authorAntti Villberg <antti.villberg@semantum.fi>
Fri, 5 Jan 2018 16:18:31 +0000 (18:18 +0200)
committerJani Simomaa <jani.simomaa@semantum.fi>
Fri, 5 Jan 2018 16:42:24 +0000 (18:42 +0200)
#7708

Change-Id: I6a2e9e05b4f79e83a11b4051658832053feadff9

bundles/org.simantics.scl.data/scl/Data/XML.scl
bundles/org.simantics.scl.data/src/org/simantics/scl/data/xml/JDomHelper.java

index 3f78b5ab530b5276b8ba78ce6880a7884deb0fce..7f836aaa43b5abcb2da0f7428d461432b1e05ee2 100644 (file)
@@ -118,5 +118,9 @@ importJava "org.simantics.scl.data.xml.JDomHelper" where
     parseFileWithSchemaFile   :: String -> String -> <Proc> Document
     //parseFileWithSchemaURL    :: URL    -> String -> <Proc> Document
 
+    addCDATA :: Element -> String -> <Proc> ()
+    getCDATAs :: Element -> <Proc> [String]
+
+
 sortChildrenBy :: Ord a => (Element -> <e> a) -> Element -> <Proc,e> ()
 sortChildrenBy f el = sortChildrenWith (\x y -> compare (f x) (f y)) el 
\ No newline at end of file
index 897af542a055c6f03f9d87a0439ac78a31c3b2d3..78a54410c65a0c5aec6d289912f99bc2c5b8a9b9 100644 (file)
@@ -5,12 +5,17 @@ import java.io.IOException;
 import java.io.StringReader;
 import java.io.StringWriter;
 import java.net.URL;
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ArrayBlockingQueue;
 
+import org.jdom2.CDATA;
+import org.jdom2.Content;
+import org.jdom2.Content.CType;
 import org.jdom2.Document;
 import org.jdom2.Element;
 import org.jdom2.IllegalAddException;
@@ -169,4 +174,17 @@ public class JDomHelper {
             }
            });
        }
+       
+       public static void addCDATA(Element element, String cdata) {
+               element.addContent(new CDATA(cdata));
+       }
+       
+       public static List<String> getCDATAs(Element element) {
+               ArrayList<String> result = new ArrayList<>();
+               for(Content c : element.getContent()) {
+                       if(CType.CDATA.equals(c.getCType())) result.add(c.getValue());
+               }
+               return result;
+       }
+       
 }