]> saetta.ns0.it Git - zakform/libzakform/commitdiff
Get xml only for non default values. Right format xml value returned.
authorAndrea Zagli <azagli@libero.it>
Wed, 27 May 2020 16:25:15 +0000 (18:25 +0200)
committerAndrea Zagli <azagli@libero.it>
Wed, 27 May 2020 16:25:15 +0000 (18:25 +0200)
src/formelement.c

index 29aa6ca962daa57af34ec860e554bb301351a8fa..ca0326e1c11502f976567b729d378fe3ba535326 100644 (file)
@@ -1824,45 +1824,96 @@ xmlNode
 
        xroot = xmlNewNode (NULL, (xmlChar *)"element");
 
-       xnode = xmlNewNode (NULL, (xmlChar *)"name");
-       xmlNodeSetContent (xnode, (xmlChar *)zak_form_element_get_name (element));
-       xmlAddChild (xroot, xnode);
+       if (zak_form_element_get_name (element) != NULL)
+               {
+                       xnode = xmlNewNode (NULL, (xmlChar *)"name");
+                       xmlNodeSetContent (xnode, (xmlChar *)zak_form_element_get_name (element));
+                       xmlAddChild (xroot, xnode);
+               }
 
-       xnode = xmlNewNode (NULL, (xmlChar *)"long-name");
-       xmlNodeSetContent (xnode, (xmlChar *)zak_form_element_get_long_name (element));
-       xmlAddChild (xroot, xnode);
+       if (zak_form_element_get_long_name (element) != NULL)
+               {
+                       xnode = xmlNewNode (NULL, (xmlChar *)"long-name");
+                       xmlNodeSetContent (xnode, (xmlChar *)zak_form_element_get_long_name (element));
+                       xmlAddChild (xroot, xnode);
+               }
 
-       xnode = xmlNewNode (NULL, (xmlChar *)"is-key");
-       xmlNodeSetContent (xnode, zak_form_element_get_is_key (element) ? (xmlChar *)"TRUE" : (xmlChar *)"FALSE");
-       xmlAddChild (xroot, xnode);
+       if (zak_form_element_get_is_key (element))
+               {
+                       xnode = xmlNewNode (NULL, (xmlChar *)"is-key");
+                       xmlNodeSetContent (xnode, zak_form_element_get_is_key (element) ? (xmlChar *)"TRUE" : (xmlChar *)"FALSE");
+                       xmlAddChild (xroot, xnode);
+               }
 
-       xnode = xmlNewNode (NULL, (xmlChar *)"type");
-       xmlNodeSetContent (xnode, (xmlChar *)zak_form_element_get_provider_type (element));
-       xmlAddChild (xroot, xnode);
+       if (zak_form_element_get_provider_type (element) != NULL)
+               {
+                       xnode = xmlNewNode (NULL, (xmlChar *)"type");
+                       xmlNodeSetContent (xnode, (xmlChar *)zak_form_element_get_provider_type (element));
+                       xmlAddChild (xroot, xnode);
+               }
 
-       xnode = xmlNewNode (NULL, (xmlChar *)"default-value");
-       xmlNodeSetContent (xnode, (xmlChar *)zak_form_element_get_default_value (element));
-       xmlAddChild (xroot, xnode);
+       if (zak_form_element_get_default_value (element) != NULL
+           && g_strcmp0 (zak_form_element_get_default_value (element), "") != 0)
+               {
+                       xnode = xmlNewNode (NULL, (xmlChar *)"default-value");
+                       xmlNodeSetContent (xnode, (xmlChar *)zak_form_element_get_default_value (element));
+                       xmlAddChild (xroot, xnode);
+               }
 
-       xnode = xmlNewNode (NULL, (xmlChar *)"format");
-       xmlNodeSetContent (xnode, (xmlChar *)zak_form_element_get_format (element));
-       xmlAddChild (xroot, xnode);
+       GHashTable *ht;
 
-       xnode = xmlNewNode (NULL, (xmlChar *)"visible");
-       xmlNodeSetContent (xnode, zak_form_element_get_visible (element) ? (xmlChar *)"TRUE" : (xmlChar *)"FALSE");
-       xmlAddChild (xroot, xnode);
+       ht = zak_form_element_get_format (element);
+       if (ht != NULL)
+               {
+                       GHashTableIter iter;
+                       gpointer key;
+                       gpointer value;
 
-       xnode = xmlNewNode (NULL, (xmlChar *)"editable");
-       xmlNodeSetContent (xnode, zak_form_element_get_editable (element) ? (xmlChar *)"TRUE" : (xmlChar *)"FALSE");
-       xmlAddChild (xroot, xnode);
+                       xnode = xmlNewNode (NULL, (xmlChar *)"format");
 
-       xnode = xmlNewNode (NULL, (xmlChar *)"to-load");
-       xmlNodeSetContent (xnode, zak_form_element_get_to_load (element) ? (xmlChar *)"TRUE" : (xmlChar *)"FALSE");
-       xmlAddChild (xroot, xnode);
+                       g_hash_table_iter_init (&iter, ht);
+                       while (g_hash_table_iter_next (&iter, &key, &value))
+                               {
+                                       if (g_strcmp0 (key, "content") == 0)
+                                               {
+                                                       xmlNodeSetContent (xnode, (xmlChar *)value);
+                                               }
+                                       else
+                                               {
+                                                       xmlSetProp (xnode, key, value);
+                                               }
+                               }
+
+                       xmlAddChild (xroot, xnode);
+               }
 
-       xnode = xmlNewNode (NULL, (xmlChar *)"to-save");
-       xmlNodeSetContent (xnode, zak_form_element_get_to_save (element) ? (xmlChar *)"TRUE" : (xmlChar *)"FALSE");
-       xmlAddChild (xroot, xnode);
+       if (!zak_form_element_get_visible (element))
+               {
+                       xnode = xmlNewNode (NULL, (xmlChar *)"visible");
+                       xmlNodeSetContent (xnode, zak_form_element_get_visible (element) ? (xmlChar *)"TRUE" : (xmlChar *)"FALSE");
+                       xmlAddChild (xroot, xnode);
+               }
+
+       if (!zak_form_element_get_editable (element))
+               {
+                       xnode = xmlNewNode (NULL, (xmlChar *)"editable");
+                       xmlNodeSetContent (xnode, zak_form_element_get_editable (element) ? (xmlChar *)"TRUE" : (xmlChar *)"FALSE");
+                       xmlAddChild (xroot, xnode);
+               }
+
+       if (!zak_form_element_get_to_load (element))
+               {
+                       xnode = xmlNewNode (NULL, (xmlChar *)"to-load");
+                       xmlNodeSetContent (xnode, zak_form_element_get_to_load (element) ? (xmlChar *)"TRUE" : (xmlChar *)"FALSE");
+                       xmlAddChild (xroot, xnode);
+               }
+
+       if (!zak_form_element_get_to_save (element))
+               {
+                       xnode = xmlNewNode (NULL, (xmlChar *)"to-save");
+                       xmlNodeSetContent (xnode, zak_form_element_get_to_save (element) ? (xmlChar *)"TRUE" : (xmlChar *)"FALSE");
+                       xmlAddChild (xroot, xnode);
+               }
 
        if (ZAK_FORM_ELEMENT_GET_CLASS (element)->get_xml != NULL)
                {