31 #include "gnc-xml-helper.h"
34 #include "sixtp-utils.h"
35 #include "sixtp-parsers.h"
36 #include "sixtp-utils.h"
37 #include "sixtp-dom-parsers.h"
38 #include "sixtp-dom-generators.h"
41 #include "io-gncxml-gen.h"
44 #include "gnc-address-xml-v2.h"
48 const gchar *address_version_string =
"2.0.0";
51 #define addr_name_string "addr:name"
52 #define addr_addr1_string "addr:addr1"
53 #define addr_addr2_string "addr:addr2"
54 #define addr_addr3_string "addr:addr3"
55 #define addr_addr4_string "addr:addr4"
56 #define addr_phone_string "addr:phone"
57 #define addr_fax_string "addr:fax"
58 #define addr_email_string "addr:email"
59 #define addr_slots_string "addr:slots"
65 maybe_add_string (xmlNodePtr ptr,
const char *tag,
const char *str)
67 if (str && strlen(str) > 0)
68 xmlAddChild (ptr, text_to_dom_tree (tag, str));
72 gnc_address_to_dom_tree (
const char *tag,
GncAddress *addr)
77 ret = xmlNewNode(NULL, BAD_CAST tag);
78 xmlSetProp(ret, BAD_CAST
"version", BAD_CAST address_version_string);
80 maybe_add_string (ret, addr_name_string, gncAddressGetName (addr));
82 maybe_add_string (ret, addr_addr1_string, gncAddressGetAddr1 (addr));
83 maybe_add_string (ret, addr_addr2_string, gncAddressGetAddr2 (addr));
84 maybe_add_string (ret, addr_addr3_string, gncAddressGetAddr3 (addr));
85 maybe_add_string (ret, addr_addr4_string, gncAddressGetAddr4 (addr));
87 maybe_add_string (ret, addr_phone_string, gncAddressGetPhone (addr));
88 maybe_add_string (ret, addr_fax_string, gncAddressGetFax (addr));
89 maybe_add_string (ret, addr_email_string, gncAddressGetEmail (addr));
91 kf = qof_instance_get_slots (QOF_INSTANCE(addr));
94 xmlNodePtr kvpnode = kvp_frame_to_dom_tree(addr_slots_string, kf);
97 xmlAddChild(ret, kvpnode);
113 void (*func)(
GncAddress *addr,
const char *txt))
115 gchar* txt = dom_tree_to_text(node);
116 g_return_val_if_fail(txt, FALSE);
126 address_name_handler (xmlNodePtr node, gpointer addr_pdata)
130 return set_string(node, pdata->address, gncAddressSetName);
134 address_addr1_handler (xmlNodePtr node, gpointer addr_pdata)
138 return set_string(node, pdata->address, gncAddressSetAddr1);
142 address_addr2_handler (xmlNodePtr node, gpointer addr_pdata)
146 return set_string(node, pdata->address, gncAddressSetAddr2);
150 address_addr3_handler (xmlNodePtr node, gpointer addr_pdata)
154 return set_string(node, pdata->address, gncAddressSetAddr3);
158 address_addr4_handler (xmlNodePtr node, gpointer addr_pdata)
162 return set_string(node, pdata->address, gncAddressSetAddr4);
166 address_phone_handler (xmlNodePtr node, gpointer addr_pdata)
170 return set_string(node, pdata->address, gncAddressSetPhone);
174 address_fax_handler (xmlNodePtr node, gpointer addr_pdata)
178 return set_string(node, pdata->address, gncAddressSetFax);
182 address_email_handler (xmlNodePtr node, gpointer addr_pdata)
186 return set_string(node, pdata->address, gncAddressSetEmail);
190 address_slots_handler (xmlNodePtr node, gpointer addr_pdata)
194 return dom_tree_to_kvp_frame_given
195 (node, qof_instance_get_slots (QOF_INSTANCE (pdata->address)));
200 { addr_name_string, address_name_handler, 0, 0 },
201 { addr_addr1_string, address_addr1_handler, 0, 0 },
202 { addr_addr2_string, address_addr2_handler, 0, 0 },
203 { addr_addr3_string, address_addr3_handler, 0, 0 },
204 { addr_addr4_string, address_addr4_handler, 0, 0 },
205 { addr_phone_string, address_phone_handler, 0, 0 },
206 { addr_fax_string, address_fax_handler, 0, 0 },
207 { addr_email_string, address_email_handler, 0, 0 },
208 { addr_slots_string, address_slots_handler, 0, 0 },
213 gnc_dom_tree_to_address (xmlNodePtr node,
GncAddress *address)
218 addr_pdata.address = address;
220 successful = dom_tree_generic_parse (node, address_handlers_v2,
225 PERR (
"failed to parse address tree");
232 address_ns(FILE *out)
234 g_return_val_if_fail(out, FALSE);
239 gnc_address_xml_initialize (
void)
243 GNC_FILE_BACKEND_VERS,
gboolean qof_object_register_backend(QofIdTypeConst type_name, const char *backend_name, gpointer be_data)
#define PERR(format, args...)
api for GnuCash version 2 XML-based file format
gboolean gnc_xml2_write_namespace_decl(FILE *out, const char *name_space)
struct KvpFrameImpl KvpFrame
const gchar * QofLogModule