diff --git a/enhanced_exi_viewer.c b/enhanced_exi_viewer.c index 496fc34..4e93c4f 100644 --- a/enhanced_exi_viewer.c +++ b/enhanced_exi_viewer.c @@ -139,6 +139,27 @@ int parse_xml_to_iso1(const char* xml_content, struct iso1EXIDocument* doc) { doc->V2G_Message.Header.SessionID.bytesLen = len; doc->V2G_Message_isUsed = 1; } + } else { + // Search directly for namespaced SessionID + char* ns_start = strstr(xml_content, ""); + if (ns_start) { + ns_start += strlen(""); + char* ns_end = strstr(ns_start, ""); + if (ns_end) { + size_t len_str = ns_end - ns_start; + static char session_id_temp[256]; + if (len_str < sizeof(session_id_temp)) { + strncpy(session_id_temp, ns_start, len_str); + session_id_temp[len_str] = '\0'; + session_id_str = trim_whitespace(session_id_temp); + size_t len; + if (parse_session_id(session_id_str, doc->V2G_Message.Header.SessionID.bytes, &len) == 0) { + doc->V2G_Message.Header.SessionID.bytesLen = len; + doc->V2G_Message_isUsed = 1; + } + } + } + } } // Check for CurrentDemandReq @@ -590,10 +611,13 @@ int main(int argc, char *argv[]) { // Parse XML to ISO1 document structure if (parse_xml_to_iso1(xml_content, &iso1Doc) != 0) { - printf("Error parsing XML file\\n"); + printf("Error parsing XML file - no supported message type found\\n"); free(xml_content); return -1; } + fprintf(stderr, "XML parsing successful\\n"); + fprintf(stderr, "SessionID length: %d\\n", iso1Doc.V2G_Message.Header.SessionID.bytesLen); + fprintf(stderr, "CurrentDemandReq_isUsed: %s\\n", iso1Doc.V2G_Message.Body.CurrentDemandReq_isUsed ? "true" : "false"); free(xml_content);