MCPcopy Create free account
hub / github.com/Exiv2/exiv2 / SerializeOneNode

Function SerializeOneNode

xmpsdk/src/XML_Node.cpp:271–316  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

269// ================
270
271static void SerializeOneNode ( std::string * buffer, const XML_Node & node )
272{
273 size_t i, limit;
274 XMP_StringPtr namePtr = node.name.c_str();
275 if ( XMP_LitNMatch ( namePtr, "_dflt_:", 7 ) ) namePtr += 7; // Hack for default namespaces.
276
277 switch ( node.kind ) {
278
279 case kElemNode:
280 *buffer += '<';
281 *buffer += namePtr;
282 for ( i = 0, limit = node.attrs.size(); i < limit; ++i ) {
283 SerializeOneNode ( buffer, *node.attrs[i] );
284 }
285 if ( node.content.empty() ) {
286 *buffer += "/>";
287 } else {
288 *buffer += '>';
289 for ( i = 0, limit = node.content.size(); i < limit; ++i ) {
290 SerializeOneNode ( buffer, *node.content[i] );
291 }
292 *buffer += "</";
293 *buffer += namePtr;
294 *buffer += '>';
295 }
296 break;
297
298 case kAttrNode:
299 *buffer += ' ';
300 *buffer += namePtr;
301 *buffer += "=\"";
302 *buffer += node.value;
303 *buffer += '"';
304 break;
305
306 case kCDataNode:
307 *buffer += node.value;
308 break;
309
310 case kPINode:
311 *buffer += node.value; // *** Note that we're dropping PIs during the Expat parse.
312 break;
313
314 }
315
316} // SerializeOneNode
317
318// =================================================================================================
319// CollectNamespaceDecls

Callers 1

SerializeMethod · 0.85

Calls 3

c_strMethod · 0.80
sizeMethod · 0.45
emptyMethod · 0.45

Tested by

no test coverage detected