@@ -35,34 +35,28 @@ function convertToDDIXML(jsonData, rootElementName) {
3535 root . att ( 'xmlns' , 'ddi:instance:3_3' ) ;
3636
3737 if ( Array . isArray ( jsonData ) ) {
38- // Array of resources
38+ // Array of resources - add each directly to root
3939 jsonData . forEach ( item => {
40- const element = convertObjectToDDI ( root , item ) ;
41- if ( element ) {
42- root . importDocument ( element ) ;
43- }
40+ convertObjectToDDI ( root , item ) ;
4441 } ) ;
4542 } else {
46- // Single resource
47- const element = convertObjectToDDI ( root , jsonData ) ;
48- if ( element ) {
49- root . importDocument ( element ) ;
50- }
43+ // Single resource - add directly to root
44+ convertObjectToDDI ( root , jsonData ) ;
5145 }
5246
5347 return root . end ( { pretty : true , indent : ' ' , newline : '\n' } ) ;
5448}
5549
5650/**
57- * Convert a single JSON object to DDI XML element
51+ * Convert a single JSON object to DDI XML element and add it to parent
5852 */
5953function convertObjectToDDI ( parent , obj ) {
6054 if ( ! obj || typeof obj !== 'object' ) {
6155 return null ;
6256 }
6357
6458 const elementName = getDDIElementName ( obj ) ;
65- const element = builder . create ( elementName ) ;
59+ const element = parent . ele ( elementName ) ;
6660
6761 // Handle isUniversallyUnique attribute
6862 if ( obj . isUniversallyUnique === true ) {
@@ -132,10 +126,7 @@ function convertObjectToDDI(parent, obj) {
132126
133127 // Handle concept (when resolved)
134128 if ( obj . concept ) {
135- const conceptEle = convertObjectToDDI ( element , obj . concept ) ;
136- if ( conceptEle ) {
137- element . importDocument ( conceptEle ) ;
138- }
129+ convertObjectToDDI ( element , obj . concept ) ;
139130 }
140131
141132 // Handle subclassOfReference
@@ -147,10 +138,7 @@ function convertObjectToDDI(parent, obj) {
147138
148139 // Handle subclassOf (when resolved)
149140 if ( obj . subclassOf ) {
150- const subclassEle = convertObjectToDDI ( element , obj . subclassOf ) ;
151- if ( subclassEle ) {
152- element . importDocument ( subclassEle ) ;
153- }
141+ convertObjectToDDI ( element , obj . subclassOf ) ;
154142 }
155143
156144 // Handle representation (for Variables)
@@ -168,10 +156,7 @@ function convertObjectToDDI(parent, obj) {
168156
169157 // Handle sourceVariable (when resolved)
170158 if ( obj . sourceVariable ) {
171- const sourceVarEle = convertObjectToDDI ( element , obj . sourceVariable ) ;
172- if ( sourceVarEle ) {
173- element . importDocument ( sourceVarEle ) ;
174- }
159+ convertObjectToDDI ( element , obj . sourceVariable ) ;
175160 }
176161
177162 // Handle concepts array (for ConceptScheme)
@@ -186,10 +171,7 @@ function convertObjectToDDI(parent, obj) {
186171 conceptRef . ele ( 'r:URN' , concept . urn || `urn:ddi:${ concept . agencyID } :${ concept . id } :${ concept . version } ` ) ;
187172 } else {
188173 // It's a full Concept object
189- const conceptEle = convertObjectToDDI ( element , concept ) ;
190- if ( conceptEle ) {
191- element . importDocument ( conceptEle ) ;
192- }
174+ convertObjectToDDI ( element , concept ) ;
193175 }
194176 } ) ;
195177 }
@@ -206,10 +188,7 @@ function convertObjectToDDI(parent, obj) {
206188 varRef . ele ( 'r:URN' , variable . urn || `urn:ddi:${ variable . agencyID } :${ variable . id } :${ variable . version } ` ) ;
207189 } else {
208190 // It's a full Variable object
209- const varEle = convertObjectToDDI ( element , variable ) ;
210- if ( varEle ) {
211- element . importDocument ( varEle ) ;
212- }
191+ convertObjectToDDI ( element , variable ) ;
213192 }
214193 } ) ;
215194 }
@@ -226,10 +205,7 @@ function convertObjectToDDI(parent, obj) {
226205 codeListRef . ele ( 'r:URN' , codeList . urn || `urn:ddi:${ codeList . agencyID } :${ codeList . id } :${ codeList . version } ` ) ;
227206 } else {
228207 // It's a full CodeList object
229- const codeListEle = convertObjectToDDI ( element , codeList ) ;
230- if ( codeListEle ) {
231- element . importDocument ( codeListEle ) ;
232- }
208+ convertObjectToDDI ( element , codeList ) ;
233209 }
234210 } ) ;
235211 }
@@ -246,21 +222,15 @@ function convertObjectToDDI(parent, obj) {
246222 catRef . ele ( 'r:URN' , category . urn || `urn:ddi:${ category . agencyID } :${ category . id } :${ category . version } ` ) ;
247223 } else {
248224 // It's a full Category object
249- const catEle = convertObjectToDDI ( element , category ) ;
250- if ( catEle ) {
251- element . importDocument ( catEle ) ;
252- }
225+ convertObjectToDDI ( element , category ) ;
253226 }
254227 } ) ;
255228 }
256229
257230 // Handle codes array (for CodeList)
258231 if ( obj . codes && Array . isArray ( obj . codes ) ) {
259232 obj . codes . forEach ( code => {
260- const codeEle = convertCodeToDDI ( element , code ) ;
261- if ( codeEle ) {
262- element . importDocument ( codeEle ) ;
263- }
233+ convertCodeToDDI ( element , code ) ;
264234 } ) ;
265235 }
266236
@@ -273,10 +243,7 @@ function convertObjectToDDI(parent, obj) {
273243
274244 // Handle categoryScheme (when resolved)
275245 if ( obj . categoryScheme ) {
276- const schemeEle = convertObjectToDDI ( element , obj . categoryScheme ) ;
277- if ( schemeEle ) {
278- element . importDocument ( schemeEle ) ;
279- }
246+ convertObjectToDDI ( element , obj . categoryScheme ) ;
280247 }
281248
282249 // Handle categoryReference (for Code)
@@ -288,10 +255,7 @@ function convertObjectToDDI(parent, obj) {
288255
289256 // Handle category (when resolved)
290257 if ( obj . category ) {
291- const catEle = convertObjectToDDI ( element , obj . category ) ;
292- if ( catEle ) {
293- element . importDocument ( catEle ) ;
294- }
258+ convertObjectToDDI ( element , obj . category ) ;
295259 }
296260
297261 // Handle value (for Code)
@@ -320,10 +284,7 @@ function convertRepresentation(parent, representation) {
320284 }
321285
322286 if ( representation . codeRepresentation . codeList ) {
323- const codeListEle = convertObjectToDDI ( codeRep , representation . codeRepresentation . codeList ) ;
324- if ( codeListEle ) {
325- codeRep . importDocument ( codeListEle ) ;
326- }
287+ convertObjectToDDI ( codeRep , representation . codeRepresentation . codeList ) ;
327288 }
328289 }
329290
0 commit comments