13#if CONTAINER_HAS_RESULT
14kcenon::common::Result<std::vector<uint8_t>>
15xml_serializer::serialize(
const value_container& container)
const noexcept
19 auto str = serialize_to_string(container);
20 return kcenon::common::ok(std::vector<uint8_t>(str.begin(), str.end()));
22 catch (
const std::bad_alloc&)
24 return kcenon::common::Result<std::vector<uint8_t>>(
25 kcenon::common::error_info{
27 "Memory allocation failed during XML serialization",
30 catch (
const std::exception& e)
32 return kcenon::common::Result<std::vector<uint8_t>>(
33 kcenon::common::error_info{
35 std::string(
"XML serialization failed: ") + e.what(),
40std::string xml_serializer::serialize_to_string(
const value_container& container)
const
43 auto message_type = container.message_type();
44 auto target_id = container.target_id();
45 auto target_sub_id = container.target_sub_id();
46 auto source_id = container.source_id();
47 auto source_sub_id = container.source_sub_id();
48 auto version = container.version();
49 auto values = container.get_variant_values();
56 if (message_type !=
"data_container")
59 "<target_id>{}</target_id>",
60 variant_helpers::xml_encode(target_id));
62 "<target_sub_id>{}</target_sub_id>",
63 variant_helpers::xml_encode(target_sub_id));
65 "<source_id>{}</source_id>",
66 variant_helpers::xml_encode(source_id));
68 "<source_sub_id>{}</source_sub_id>",
69 variant_helpers::xml_encode(source_sub_id));
72 "<message_type>{}</message_type>",
73 variant_helpers::xml_encode(message_type));
75 "<version>{}</version>",
76 variant_helpers::xml_encode(version));
81 for (
const auto& u : values)
83 std::string value_str = variant_helpers::to_string(u.data, u.type);
85 u.name, variant_helpers::xml_encode(value_str),