// ============================================================ zfbool ZFSerializableDataParseXml(ZF_OUT ZFSerializableData &ret, ZF_IN const ZFInputCallback &input) { if(!input.callbackIsValid()) { return zffalse; } ZFXmlItem xmlElement = ZFXmlParseFirstElement(input); if(xmlElement.xmlType() == ZFXmlType::e_XmlNull) { return zffalse; } if(!ZFXmlToSerializableData(ret, xmlElement)) { return zffalse; } { ZFString *v = input.callbackTagGet<ZFString *>(ZFCallbackTagKeyword_resPath); if(v != zfnull) { ret.serializableDataTagSetMarkCached(ZFSerializableDataTagKeyword_resPath, v); } else { v = input.callbackTagGet<ZFString *>(ZFCallbackTagKeyword_filePath); if(v != zfnull) { ret.serializableDataTagSetMarkCached(ZFSerializableDataTagKeyword_filePath, v); } } } return zftrue; }
ZF_NAMESPACE_GLOBAL_BEGIN ZFSERIALIZABLEDATA_REFERENCE_TYPE_DEFINE(ZFSerializableDataRefType_xml, serializableData, data, outErrorHintToAppend) { ZFXmlItem xmlElement = ZFXmlParseFirstElement(ZFInputCallbackForFileDescriptor(data)); if(xmlElement.xmlType() == ZFXmlType::e_XmlNull) { ZFSerializableUtil::errorOccurred(outErrorHintToAppend, zfText("failed to load xml element from \"%s\""), data); return zffalse; } return ZFXmlToSerializableData(serializableData, xmlElement); }
ZFOBJECT_CREATOR_DEFINE(ZFObjectCreatorType_xml, data) { ZFXmlItem xmlElement = ZFXmlParseFirstElement(ZFInputCallbackForFileDescriptor(data)); if(xmlElement == zfnull) { return zfautoObjectNull; } ZFSerializableData serializableData; if(ZFXmlToSerializableData(serializableData, xmlElement)) { return ZFObjectFromSerializableData(serializableData); } return zfautoObjectNull; }