194 mnl = metadataElement.namedItem( QStringLiteral(
"identifier" ) );
198 mnl = metadataElement.namedItem( QStringLiteral(
"parentidentifier" ) );
202 mnl = metadataElement.namedItem( QStringLiteral(
"language" ) );
206 mnl = metadataElement.namedItem( QStringLiteral(
"type" ) );
207 mType = mnl.toElement().text();
210 mnl = metadataElement.namedItem( QStringLiteral(
"title" ) );
211 mTitle = mnl.toElement().text();
214 mnl = metadataElement.namedItem( QStringLiteral(
"abstract" ) );
222 const QDomNodeList
keywords = metadataElement.elementsByTagName( QStringLiteral(
"keywords" ) );
224 for (
int i = 0; i <
keywords.size(); i++ )
226 QStringList keywordsList;
228 mne = mnl.toElement();
230 const QDomNodeList el = mne.elementsByTagName( QStringLiteral(
"keyword" ) );
231 for (
int j = 0; j < el.size(); j++ )
233 keywordsList.append( el.at( j ).toElement().text() );
235 addKeywords( mne.attribute( QStringLiteral(
"vocabulary" ) ), keywordsList );
239 const QDomNodeList contactsList = metadataElement.elementsByTagName( QStringLiteral(
"contact" ) );
241 for (
int i = 0; i < contactsList.size(); i++ )
243 mnl = contactsList.at( i );
244 mne = mnl.toElement();
247 oneContact.
name = mne.namedItem( QStringLiteral(
"name" ) ).toElement().text();
248 oneContact.
organization = mne.namedItem( QStringLiteral(
"organization" ) ).toElement().text();
249 oneContact.
position = mne.namedItem( QStringLiteral(
"position" ) ).toElement().text();
250 oneContact.
voice = mne.namedItem( QStringLiteral(
"voice" ) ).toElement().text();
251 oneContact.
fax = mne.namedItem( QStringLiteral(
"fax" ) ).toElement().text();
252 oneContact.
email = mne.namedItem( QStringLiteral(
"email" ) ).toElement().text();
253 oneContact.
role = mne.namedItem( QStringLiteral(
"role" ) ).toElement().text();
255 QList< QgsAbstractMetadataBase::Address > addresses;
256 const QDomNodeList addressList = mne.elementsByTagName( QStringLiteral(
"contactAddress" ) );
257 for (
int j = 0; j < addressList.size(); j++ )
259 const QDomElement addressElement = addressList.at( j ).toElement();
261 oneAddress.
address = addressElement.namedItem( QStringLiteral(
"address" ) ).toElement().text();
262 oneAddress.
administrativeArea = addressElement.namedItem( QStringLiteral(
"administrativearea" ) ).toElement().text();
263 oneAddress.
city = addressElement.namedItem( QStringLiteral(
"city" ) ).toElement().text();
264 oneAddress.
country = addressElement.namedItem( QStringLiteral(
"country" ) ).toElement().text();
265 oneAddress.
postalCode = addressElement.namedItem( QStringLiteral(
"postalcode" ) ).toElement().text();
266 oneAddress.
type = addressElement.namedItem( QStringLiteral(
"type" ) ).toElement().text();
267 addresses << oneAddress;
274 mnl = metadataElement.namedItem( QStringLiteral(
"links" ) );
275 mne = mnl.toElement();
277 const QDomNodeList el = mne.elementsByTagName( QStringLiteral(
"link" ) );
278 for (
int i = 0; i < el.size(); i++ )
280 mne = el.at( i ).toElement();
282 oneLink.
name = mne.attribute( QStringLiteral(
"name" ) );
283 oneLink.
type = mne.attribute( QStringLiteral(
"type" ) );
284 oneLink.
url = mne.attribute( QStringLiteral(
"url" ) );
285 oneLink.
description = mne.attribute( QStringLiteral(
"description" ) );
286 oneLink.
format = mne.attribute( QStringLiteral(
"format" ) );
287 oneLink.
mimeType = mne.attribute( QStringLiteral(
"mimeType" ) );
288 oneLink.
size = mne.attribute( QStringLiteral(
"size" ) );
293 const QDomNodeList historyNodeList = metadataElement.elementsByTagName( QStringLiteral(
"history" ) );
294 QStringList historyList;
295 for (
int i = 0; i < historyNodeList.size(); i++ )
297 mnl = historyNodeList.at( i );
298 mne = mnl.toElement();
299 historyList.append( mne.text() );
305 const QDomElement dateElement = metadataElement.firstChildElement( QStringLiteral(
"dates" ) );
306 if ( !dateElement.isNull() )
308 const QDomNodeList dateNodeList = dateElement.elementsByTagName( QStringLiteral(
"date" ) );
309 const QMetaEnum dateEnum = QMetaEnum::fromType<Qgis::MetadataDateType>();
310 for (
int i = 0; i < dateNodeList.size(); i++ )
312 const QDomElement dateElement = dateNodeList.at( i ).toElement();
314 const QDateTime value = QDateTime::fromString( dateElement.attribute( QStringLiteral(
"value" ) ), Qt::ISODate );
315 if ( value.isValid() && !value.isNull() )
327 QDomElement
identifier = document.createElement( QStringLiteral(
"identifier" ) );
328 const QDomText identifierText = document.createTextNode(
mIdentifier );
333 QDomElement
parentIdentifier = document.createElement( QStringLiteral(
"parentidentifier" ) );
334 const QDomText parentIdentifierText = document.createTextNode(
mParentIdentifier );
339 QDomElement
language = document.createElement( QStringLiteral(
"language" ) );
340 const QDomText languageText = document.createTextNode(
mLanguage );
341 language.appendChild( languageText );
342 metadataElement.appendChild(
language );
345 QDomElement
type = document.createElement( QStringLiteral(
"type" ) );
346 const QDomText typeText = document.createTextNode(
mType );
347 type.appendChild( typeText );
348 metadataElement.appendChild(
type );
351 QDomElement
title = document.createElement( QStringLiteral(
"title" ) );
352 const QDomText titleText = document.createTextNode(
mTitle );
353 title.appendChild( titleText );
354 metadataElement.appendChild(
title );
357 QDomElement
abstract = document.createElement( QStringLiteral(
"abstract" ) );
358 const QDomText abstractText = document.createTextNode(
mAbstract );
359 abstract.appendChild( abstractText );
360 metadataElement.appendChild(
abstract );
363 QMapIterator<QString, QStringList> i(
mKeywords );
364 while ( i.hasNext() )
367 QDomElement keywordsElement = document.createElement( QStringLiteral(
"keywords" ) );
368 keywordsElement.setAttribute( QStringLiteral(
"vocabulary" ), i.key() );
369 const QStringList values = i.value();
370 for (
const QString &kw : values )
372 QDomElement keyword = document.createElement( QStringLiteral(
"keyword" ) );
373 const QDomText keywordText = document.createTextNode( kw );
374 keyword.appendChild( keywordText );
375 keywordsElement.appendChild( keyword );
377 metadataElement.appendChild( keywordsElement );
383 QDomElement contactElement = document.createElement( QStringLiteral(
"contact" ) );
384 QDomElement nameElement = document.createElement( QStringLiteral(
"name" ) );
385 QDomElement organizationElement = document.createElement( QStringLiteral(
"organization" ) );
386 QDomElement positionElement = document.createElement( QStringLiteral(
"position" ) );
387 QDomElement voiceElement = document.createElement( QStringLiteral(
"voice" ) );
388 QDomElement faxElement = document.createElement( QStringLiteral(
"fax" ) );
389 QDomElement emailElement = document.createElement( QStringLiteral(
"email" ) );
390 QDomElement roleElement = document.createElement( QStringLiteral(
"role" ) );
392 const QDomText nameText = document.createTextNode( contact.name );
393 const QDomText orgaText = document.createTextNode( contact.organization );
394 const QDomText positionText = document.createTextNode( contact.position );
395 const QDomText voiceText = document.createTextNode( contact.voice );
396 const QDomText faxText = document.createTextNode( contact.fax );
397 const QDomText emailText = document.createTextNode( contact.email );
398 const QDomText roleText = document.createTextNode( contact.role );
402 QDomElement addressElement = document.createElement( QStringLiteral(
"contactAddress" ) );
403 QDomElement typeElement = document.createElement( QStringLiteral(
"type" ) );
404 QDomElement addressDetailedElement = document.createElement( QStringLiteral(
"address" ) );
405 QDomElement cityElement = document.createElement( QStringLiteral(
"city" ) );
406 QDomElement administrativeAreaElement = document.createElement( QStringLiteral(
"administrativearea" ) );
407 QDomElement postalCodeElement = document.createElement( QStringLiteral(
"postalcode" ) );
408 QDomElement countryElement = document.createElement( QStringLiteral(
"country" ) );
410 typeElement.appendChild( document.createTextNode( oneAddress.
type ) );
411 addressDetailedElement.appendChild( document.createTextNode( oneAddress.
address ) );
412 cityElement.appendChild( document.createTextNode( oneAddress.
city ) );
413 administrativeAreaElement.appendChild( document.createTextNode( oneAddress.
administrativeArea ) );
414 postalCodeElement.appendChild( document.createTextNode( oneAddress.
postalCode ) );
415 countryElement.appendChild( document.createTextNode( oneAddress.
country ) );
417 addressElement.appendChild( typeElement );
418 addressElement.appendChild( addressDetailedElement );
419 addressElement.appendChild( cityElement );
420 addressElement.appendChild( administrativeAreaElement );
421 addressElement.appendChild( postalCodeElement );
422 addressElement.appendChild( countryElement );
423 contactElement.appendChild( addressElement );
426 nameElement.appendChild( nameText );
427 organizationElement.appendChild( orgaText );
428 positionElement.appendChild( positionText );
429 voiceElement.appendChild( voiceText );
430 faxElement.appendChild( faxText );
431 emailElement.appendChild( emailText );
432 roleElement.appendChild( roleText );
434 contactElement.appendChild( nameElement );
435 contactElement.appendChild( organizationElement );
436 contactElement.appendChild( positionElement );
437 contactElement.appendChild( voiceElement );
438 contactElement.appendChild( faxElement );
439 contactElement.appendChild( emailElement );
440 contactElement.appendChild( roleElement );
441 metadataElement.appendChild( contactElement );
445 QDomElement
links = document.createElement( QStringLiteral(
"links" ) );
448 QDomElement linkElement = document.createElement( QStringLiteral(
"link" ) );
449 linkElement.setAttribute( QStringLiteral(
"name" ), link.name );
450 linkElement.setAttribute( QStringLiteral(
"type" ), link.type );
451 linkElement.setAttribute( QStringLiteral(
"url" ), link.url );
452 linkElement.setAttribute( QStringLiteral(
"description" ), link.description );
453 linkElement.setAttribute( QStringLiteral(
"format" ), link.format );
454 linkElement.setAttribute( QStringLiteral(
"mimeType" ), link.mimeType );
455 linkElement.setAttribute( QStringLiteral(
"size" ), link.size );
456 links.appendChild( linkElement );
458 metadataElement.appendChild(
links );
463 QDomElement historyElement = document.createElement( QStringLiteral(
"history" ) );
464 const QDomText historyText = document.createTextNode(
history );
465 historyElement.appendChild( historyText );
466 metadataElement.appendChild( historyElement );
471 const QMetaEnum dateEnum = QMetaEnum::fromType<Qgis::MetadataDateType>();
472 QDomElement datesElement = document.createElement( QStringLiteral(
"dates" ) );
473 for (
int k = 0; k < dateEnum.keyCount(); k++ )
478 QDomElement dateElement = document.createElement( QStringLiteral(
"date" ) );
479 dateElement.setAttribute( QStringLiteral(
"type" ), dateEnum.valueToKey(
static_cast< int >(
type ) ) );
480 dateElement.setAttribute( QStringLiteral(
"value" ),
mDates.value(
type ).toString( Qt::ISODate ) );
481 datesElement.appendChild( dateElement );
484 metadataElement.appendChild( datesElement );