Я бы сделал где-нибудь `QMap<QString, std::function<void (QString, Photo&)>>` с контентом вроде
```
map ["PicID"] = [] (const QString& text, Photo& photo) { photo.ID_ = text.toUtf8 (); };
```
и циклом вида
```
const auto& func = map.value (fieldElem.tagName ());
if (!func)
{
    // поругаться, или не поругаться
}

func (fieldElem.text (), photo);
```