/xmlbench/trunk

To get this branch, use:
bzr branch http://darksoft.org/webbzr/xmlbench/trunk

« back to all changes in this revision

Viewing changes to create/libxml-dom.c

  • Committer: Suren A. Chilingaryan
  • Date: 2009-02-16 09:27:17 UTC
  • Revision ID: csa@dside.dyndns.org-20090216092717-wipyvaaw2srxhgns
Initial import

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#include <stdio.h>
 
2
#include <sys/time.h>
 
3
#include <gdome.h>
 
4
 
 
5
#include "tools.h"
 
6
 
 
7
GdomeDocument *doc;
 
8
 
 
9
void ds_xmlSetProp(GdomeNode *node, char *nm, char *val) {
 
10
    GdomeDOMString *dstr_nm, *dstr_val;
 
11
    GdomeException exc;
 
12
    dstr_nm=gdome_str_mkref_dup(nm);
 
13
    dstr_val=gdome_str_mkref_dup(val);
 
14
    gdome_el_setAttribute((GdomeElement*)node,dstr_nm,dstr_val,&exc);
 
15
    gdome_str_unref(dstr_nm);
 
16
    gdome_str_unref(dstr_val);
 
17
}
 
18
 
 
19
GdomeNode *ds_xmlNewChild(GdomeNode *node, char *nm, char *title, char *text) {
 
20
    GdomeDOMString *dstr;
 
21
    GdomeNode *rnode;
 
22
    GdomeException exc;
 
23
 
 
24
    dstr = gdome_str_mkref_dup(title);
 
25
    rnode=(GdomeNode*)gdome_doc_createElement(doc,dstr,&exc);
 
26
    gdome_str_unref(dstr);
 
27
    gdome_n_appendChild(node,(GdomeNode*)rnode,&exc);
 
28
    if (text) {
 
29
        dstr = gdome_str_mkref_dup(text);
 
30
        gdome_n_appendChild(rnode,(GdomeNode*)gdome_doc_createTextNode(doc,dstr,&exc),&exc);
 
31
        gdome_str_unref(dstr);
 
32
    }
 
33
 
 
34
    return rnode;
 
35
}
 
36
 
 
37
GdomeDOMImplementation *di;
 
38
 
 
39
void initXML(struct TestData *td) {
 
40
    di=gdome_di_mkref();
 
41
}
 
42
 
 
43
void releaseXML(struct TestData *td) {
 
44
    GdomeException exc;
 
45
    gdome_di_unref(di,&exc);
 
46
}
 
47
 
 
48
void parseXML(struct TestData *td, unsigned long iter) {
 
49
    GdomeNode *pnode,*node,*node1;
 
50
    GdomeException exc;
 
51
    GdomeDOMString *dstr;
 
52
    char *mem;
 
53
    char s[16];
 
54
    int i;
 
55
 
 
56
    dstr = gdome_str_mkref_dup("Envelope");
 
57
    doc=gdome_di_createDocument(di,NULL,dstr,NULL,&exc); gdome_str_unref(dstr); 
 
58
    pnode=(GdomeNode*)gdome_doc_documentElement(doc,&exc); 
 
59
    ds_xmlSetProp(pnode,"xmlns","http://www.w3.org/2001/12/soap-envelope");
 
60
    ds_xmlSetProp(pnode,"xmlns:xsi","http://www.w3.org/2001/XMLSchema-instance");
 
61
    ds_xmlSetProp(pnode,"xmlns:enc","http://www.w3.org/2001/12/soap-encoding");
 
62
    node=ds_xmlNewChild(pnode,NULL,"Body",NULL);
 
63
    pnode=ds_xmlNewChild(pnode,NULL,"WriteResponse",NULL);
 
64
    ds_xmlSetProp(pnode,"xmlns","http://opcfoundation.org/webservices/OPCDA/");
 
65
    node=ds_xmlNewChild(pnode,NULL,"WriteResult",NULL);
 
66
    ds_xmlSetProp(node,"RcvTime","2002-04-29T10:16:26.6806250+02:00");
 
67
    ds_xmlSetProp(node,"ReplyTime","2002-04-29T10:16:26.7806250+02:00");
 
68
    ds_xmlSetProp(node,"ClientRequestHandle","WriteError");
 
69
    ds_xmlSetProp(node,"RevisedLocaleID","en");
 
70
    ds_xmlSetProp(node,"ServerState","running");
 
71
    node1=ds_xmlNewChild(pnode,NULL,"RItemList",NULL);
 
72
    node=ds_xmlNewChild(pnode,NULL,"Errors",NULL);
 
73
    ds_xmlSetProp(node,"ID","E_UNKNOWNITEMID");
 
74
    ds_xmlNewChild(node,NULL,"Text","The item does not exist in the server address space.");
 
75
    node=ds_xmlNewChild(pnode,NULL,"Errors",NULL);
 
76
    ds_xmlSetProp(node,"ID","S_CLAMP");
 
77
    ds_xmlNewChild(node,NULL,"Text","The value written was accepted but the output was clamped.");
 
78
 
 
79
    pnode=node1;
 
80
    node=ds_xmlNewChild(pnode,NULL,"Items",NULL);
 
81
    ds_xmlSetProp(node,"ItemPath","");
 
82
    ds_xmlSetProp(node,"ItemName","WrongItemID1");
 
83
    ds_xmlSetProp(node,"Timestamp","0001-01-01T00:00:00.0000000+01:00");
 
84
    ds_xmlSetProp(node,"ErrorID","E_UNKNOWNITEMID");
 
85
    node1=ds_xmlNewChild(node,NULL,"Value",NULL);
 
86
    ds_xmlSetProp(node1,"xsi:nil","true");
 
87
 
 
88
    node=ds_xmlNewChild(pnode,NULL,"Items",NULL);
 
89
    ds_xmlSetProp(node,"ItemPath","");
 
90
    ds_xmlSetProp(node,"ItemName","WrongItemID2");
 
91
    ds_xmlSetProp(node,"Timestamp","0001-01-01T00:00:00.0000000+01:00");
 
92
    ds_xmlSetProp(node,"ErrorID","E_UNKNOWNITEMID");
 
93
    node1=ds_xmlNewChild(node,NULL,"Value",NULL);
 
94
    ds_xmlSetProp(node1,"xsi:nil","true");
 
95
 
 
96
    node=ds_xmlNewChild(pnode,NULL,"Items",NULL);
 
97
    ds_xmlSetProp(node,"ItemPath","/Reals");
 
98
    ds_xmlSetProp(node,"ItemName","Float1");
 
99
    ds_xmlSetProp(node,"ValueType","xsd:float");
 
100
    ds_xmlSetProp(node,"Timestamp","2002-04-29T11:47:18.1493750+02:00");
 
101
    node1=ds_xmlNewChild(node,NULL,"Value","10.0141414");
 
102
    ds_xmlSetProp(node1,"xsi:type","xsd:float");
 
103
 
 
104
    node=ds_xmlNewChild(pnode,NULL,"Items",NULL);
 
105
    ds_xmlSetProp(node,"ItemPath","/Reals");
 
106
    ds_xmlSetProp(node,"ItemName","Float2");
 
107
    ds_xmlSetProp(node,"ValueType","xsd:float");
 
108
    ds_xmlSetProp(node,"Timestamp","2002-04-29T11:47:18.1493750+02:00");
 
109
    ds_xmlSetProp(node,"SuccessID","S_CLAMP");
 
110
    node1=ds_xmlNewChild(node,NULL,"Value","1.07");
 
111
    ds_xmlSetProp(node1,"xsi:type","xsd:float");
 
112
 
 
113
    for (i=0;i<td->inc;i++) {
 
114
        node=ds_xmlNewChild(pnode,NULL,"Items",NULL);
 
115
        ds_xmlSetProp(node,"ItemPath","/Integer");
 
116
        ds_xmlSetProp(node,"ItemName","IntN");
 
117
        ds_xmlSetProp(node,"ValueType","xsd:int");
 
118
        ds_xmlSetProp(node,"Timestamp","2002-04-29T11:47:18.1493750+02:00");
 
119
        ds_xmlSetProp(node,"SuccessID","S_CLAMP");
 
120
        sprintf(s,"%u",rand());
 
121
        node1=ds_xmlNewChild(node,NULL,"Value",s);
 
122
        ds_xmlSetProp(node1,"xsi:type","xsd:int");
 
123
    }
 
124
 
 
125
    gdome_di_saveDocToMemory(di,doc,&mem,0,&exc);
 
126
    gdome_di_freeDoc(di,doc,&exc);
 
127
    
 
128
//    if (iter==td->iterations) puts(mem);
 
129
    free(mem);
 
130
}
 
131
 
 
132
int main(int argc, char *argv[]) {
 
133
    return Test(argc,argv);
 
134
}