XML output with WinRunner – 1
Root page: Service Functions – XML
Parent page: Service Functions – XML / WinRunner
Declarations and definitions
#xml rectricted characters static const _XML_RESTRICTED[] = { 0 = 5, 1 = {"&", "&"}, 2 = {"\"", """}, 3 = {">", ">"}, 4 = {"<", "<"}, 5 = {" ", " "} # web space char }; #Flags static xml_write_mode; static node_indent; #XML filespec public _xml_file_spec; public _xml_dump[]; #XSL parsers #"<?xml-stylesheet type=\"text/xsl\" href=\"...*.xsl\"?>" static xsl_parser = "";
Initialization
public function xml_init() { _xml_file_spec = ""; node_indent = ""; delete _xml_dump[]; _xml_dump[0] = 0; xml_write_mode = TRUE; }public function xml_file_init(in xml_file, in parser_line) { auto rc; rc = file_open(xml_file, FO_MODE_WRITE); if (rc != E_OK) return(rc); if (parser_line != "") xsl_parser = parser_line; file_printf(xml_file, "%s\r\n", xsl_parser); file_printf(xml_file, "%s\r\n", ""); file_close(xml_file); return(E_OK); }
Parsing
static function xml_str_norm(in s) { auto c, i; auto res; c = _XML_RESTRICTED[0]; res = s; for (i=1;i<=c;i++) res = str_replace(res, _XML_RESTRICTED[i,0], _XML_RESTRICTED[i,1]); return(res); }
Control flag
Buffering
static function dump_printf(in format_str, in arg_str) { _xml_dump[0]++; _xml_dump[_xml_dump[0],"format"] = format_str; _xml_dump[_xml_dump[0],"arg"] = arg_str; } public function xml_dump_write(in xml_file) { auto rc, i; rc = file_open(xml_file, FO_MODE_APPEND); if (rc != E_OK) return(rc); for (i=1;i<=_xml_dump[0];i++) file_printf(xml_file, _xml_dump[i,"format"], _xml_dump[i,"arg"]); file_close(xml_file); delete _xml_dump[]; return(E_OK); }