MCPcopy Create free account
hub / github.com/MITK/MITK / PropertyToXMLElement

Method PropertyToXMLElement

Modules/Multilabel/src/mitkMultiLabelIOHelper.cpp:326–364  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

324}
325
326tinyxml2::XMLElement *mitk::MultiLabelIOHelper::PropertyToXMLElement(tinyxml2::XMLDocument &doc, const std::string &key, const BaseProperty *property)
327{
328 auto *keyelement = doc.NewElement("property");
329 keyelement->SetAttribute("key", key.c_str());
330 keyelement->SetAttribute("type", property->GetNameOfClass());
331
332 // construct name of serializer class
333 std::string serializername(property->GetNameOfClass());
334 serializername += "Serializer";
335
336 std::list<itk::LightObject::Pointer> allSerializers =
337 itk::ObjectFactoryBase::CreateAllInstance(serializername.c_str());
338 if (allSerializers.size() < 1)
339 MITK_ERROR << "No serializer found for " << property->GetNameOfClass() << ". Skipping object";
340
341 if (allSerializers.size() > 1)
342 MITK_WARN << "Multiple serializers found for " << property->GetNameOfClass() << "Using arbitrarily the first one.";
343
344 for (auto iter = allSerializers.begin(); iter != allSerializers.end();
345 ++iter)
346 {
347 if (auto *serializer = dynamic_cast<BasePropertySerializer *>(iter->GetPointer()))
348 {
349 serializer->SetProperty(property);
350 try
351 {
352 auto *valueelement = serializer->Serialize(doc);
353 if (valueelement)
354 keyelement->InsertEndChild(valueelement);
355 }
356 catch (std::exception &e)
357 {
358 MITK_ERROR << "Serializer " << serializer->GetNameOfClass() << " failed: " << e.what();
359 }
360 break;
361 }
362 }
363 return keyelement;
364}
365
366bool mitk::MultiLabelIOHelper::PropertyFromXMLElement(std::string &key,
367 mitk::BaseProperty::Pointer &prop,

Callers

nothing calls this directly

Calls 8

GetPointerMethod · 0.80
whatMethod · 0.80
GetNameOfClassMethod · 0.45
sizeMethod · 0.45
beginMethod · 0.45
endMethod · 0.45
SetPropertyMethod · 0.45
SerializeMethod · 0.45

Tested by

no test coverage detected