YAZ 5.37.0
xml_add.c
Go to the documentation of this file.
1/* This file is part of the YAZ toolkit.
2 * Copyright (C) Index Data
3 * See the file LICENSE for details.
4 */
9#if HAVE_CONFIG_H
10#include <config.h>
11#endif
12
13#include <stdio.h>
14
15#include <yaz/srw.h>
16#include <yaz/snprintf.h>
17
18#if YAZ_HAVE_XML2
19#include "sru-p.h"
20
21void add_XML_n(xmlNodePtr ptr, const char *elem, char *val, int len,
22 xmlNsPtr ns_ptr)
23{
24 if (val)
25 {
26 xmlDocPtr doc = xmlParseMemory(val,len);
27 if (doc)
28 {
29 xmlNodePtr c = xmlNewChild(ptr, ns_ptr, BAD_CAST elem, 0);
30 xmlNodePtr t = xmlDocGetRootElement(doc);
31 xmlAddChild(c, xmlCopyNode(t,1));
32 xmlFreeDoc(doc);
33 }
34 }
35}
36
37xmlNodePtr add_xsd_string_n(xmlNodePtr ptr, const char *elem, const char *val,
38 int len)
39{
40 if (val)
41 {
42 xmlNodePtr c = xmlNewChild(ptr, 0, BAD_CAST elem, 0);
43 xmlNodePtr t = xmlNewTextLen(BAD_CAST val, len);
44 xmlAddChild(c, t);
45 return t;
46 }
47 return 0;
48}
49
50xmlNodePtr add_xsd_string_ns(xmlNodePtr ptr, const char *elem, const char *val,
51 xmlNsPtr ns_ptr)
52{
53 if (val)
54 {
55 xmlNodePtr c = xmlNewChild(ptr, ns_ptr, BAD_CAST elem, 0);
56 xmlNodePtr t = xmlNewText(BAD_CAST val);
57 xmlAddChild(c, t);
58 return t;
59 }
60 return 0;
61}
62
63xmlNodePtr add_xsd_string(xmlNodePtr ptr, const char *elem, const char *val)
64{
65 return add_xsd_string_ns(ptr, elem, val, 0);
66}
67
68void add_xsd_integer(xmlNodePtr ptr, const char *elem,
69 const Odr_int *val)
70{
71 if (val)
72 {
73 char str[40];
74 yaz_snprintf(str, sizeof str, ODR_INT_PRINTF, *val);
75 xmlNewTextChild(ptr, 0, BAD_CAST elem, BAD_CAST str);
76 }
77}
78
79#endif
80
81/*
82 * Local variables:
83 * c-basic-offset: 4
84 * c-file-style: "Stroustrup"
85 * indent-tabs-mode: nil
86 * End:
87 * vim: shiftwidth=4 tabstop=8 expandtab
88 */
89
#define ODR_INT_PRINTF
Definition odr.h:49
nmem_int_t Odr_int
Definition odr.h:47
void yaz_snprintf(char *buf, size_t size, const char *fmt,...)
Definition snprintf.c:31
Header for config file reading utilities.
SRU private header.
Header for SRW/SRU.
xmlNodePtr add_xsd_string_ns(xmlNodePtr ptr, const char *elem, const char *val, xmlNsPtr ns_ptr)
Definition xml_add.c:50
void add_XML_n(xmlNodePtr ptr, const char *elem, char *val, int len, xmlNsPtr ns_ptr)
Definition xml_add.c:21
void add_xsd_integer(xmlNodePtr ptr, const char *elem, const Odr_int *val)
Definition xml_add.c:68
xmlNodePtr add_xsd_string(xmlNodePtr ptr, const char *elem, const char *val)
Definition xml_add.c:63
xmlNodePtr add_xsd_string_n(xmlNodePtr ptr, const char *elem, const char *val, int len)
Definition xml_add.c:37