YAZ 5.35.1
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#if YAZ_HAVE_XML2
17#include "sru-p.h"
18
19void add_XML_n(xmlNodePtr ptr, const char *elem, char *val, int len,
20 xmlNsPtr ns_ptr)
21{
22 if (val)
23 {
24 xmlDocPtr doc = xmlParseMemory(val,len);
25 if (doc)
26 {
27 xmlNodePtr c = xmlNewChild(ptr, ns_ptr, BAD_CAST elem, 0);
28 xmlNodePtr t = xmlDocGetRootElement(doc);
29 xmlAddChild(c, xmlCopyNode(t,1));
30 xmlFreeDoc(doc);
31 }
32 }
33}
34
35xmlNodePtr add_xsd_string_n(xmlNodePtr ptr, const char *elem, const char *val,
36 int len)
37{
38 if (val)
39 {
40 xmlNodePtr c = xmlNewChild(ptr, 0, BAD_CAST elem, 0);
41 xmlNodePtr t = xmlNewTextLen(BAD_CAST val, len);
42 xmlAddChild(c, t);
43 return t;
44 }
45 return 0;
46}
47
48xmlNodePtr add_xsd_string_ns(xmlNodePtr ptr, const char *elem, const char *val,
49 xmlNsPtr ns_ptr)
50{
51 if (val)
52 {
53 xmlNodePtr c = xmlNewChild(ptr, ns_ptr, BAD_CAST elem, 0);
54 xmlNodePtr t = xmlNewText(BAD_CAST val);
55 xmlAddChild(c, t);
56 return t;
57 }
58 return 0;
59}
60
61xmlNodePtr add_xsd_string(xmlNodePtr ptr, const char *elem, const char *val)
62{
63 return add_xsd_string_ns(ptr, elem, val, 0);
64}
65
66void add_xsd_integer(xmlNodePtr ptr, const char *elem,
67 const Odr_int *val)
68{
69 if (val)
70 {
71 char str[40];
72 sprintf(str, ODR_INT_PRINTF, *val);
73 xmlNewTextChild(ptr, 0, BAD_CAST elem, BAD_CAST str);
74 }
75}
76
77#endif
78
79/*
80 * Local variables:
81 * c-basic-offset: 4
82 * c-file-style: "Stroustrup"
83 * indent-tabs-mode: nil
84 * End:
85 * vim: shiftwidth=4 tabstop=8 expandtab
86 */
87
#define ODR_INT_PRINTF
Definition odr.h:49
nmem_int_t Odr_int
Definition odr.h:47
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:48
void add_XML_n(xmlNodePtr ptr, const char *elem, char *val, int len, xmlNsPtr ns_ptr)
Definition xml_add.c:19
void add_xsd_integer(xmlNodePtr ptr, const char *elem, const Odr_int *val)
Definition xml_add.c:66
xmlNodePtr add_xsd_string(xmlNodePtr ptr, const char *elem, const char *val)
Definition xml_add.c:61
xmlNodePtr add_xsd_string_n(xmlNodePtr ptr, const char *elem, const char *val, int len)
Definition xml_add.c:35