Advertisement
Guest User

uf_json_to_xml

a guest
Sep 5th, 2016
188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. String ls_name, ls_value, ls_ch, ls_pom
  2. integer li_mode, li_rc
  3. long ll_max, ll_i
  4. OLEobject xmlelem, xmlchild
  5.  
  6. xmldoc.loadXML("<XML/>")
  7. xmlelem = xmldoc.documentElement
  8.  
  9.   ll_max = Len(as_json)         //počet znaků v kódu
  10.   li_mode = 0                           //zvolený mód
  11.   ls_name = ""                          //název
  12.   ls_value = ""                     //hodnota
  13.  
  14.   //Cyklus jde znak po znaku
  15.   do while ll_i < ll_max
  16.     ll_i = ll_i + 1
  17.      //V textu vybere počet znaků(1) od pozicice ll_i - vždy tedy jeden znak
  18.     ls_ch = Mid(as_json, ll_i, 1)      
  19.     choose case (li_mode)  
  20.         case 0                  //Mod 0 - hledá počáteční závorku
  21.         choose case ls_ch
  22.             case "{"
  23.                   xmlchild = xmldoc.createElement("TAG")               
  24.                   xmlelem.appendChild(xmlchild)
  25.                   xmlelem.appendchild(xmldoc.createTextNode('~r~n'))
  26.                   xmlelem.insertBefore(xmldoc.createTextNode('~r~n'), xmlchild)
  27.                   xmlelem = xmlchild
  28.                 li_mode = 1
  29.             end choose               
  30.         case 1                      //Mod 1
  31.         choose case ls_ch
  32.                 case '"'
  33.                   ls_name = ""
  34.                   li_mode = 2
  35.                 case "{"
  36.                   xmlchild = xmldoc.createElement("TAG")               
  37.                   xmlelem.appendChild(xmlchild)
  38.                   xmlelem.appendchild(xmldoc.createTextNode('~r~n'))
  39.                   xmlelem.insertBefore(xmldoc.createTextNode('~r~n'), xmlchild)
  40.                   xmlelem = xmlchild
  41.                  
  42.                 case "["
  43.                   xmlchild = xmldoc.createElement("TAG")               
  44.                   xmlelem.appendChild(xmlchild)
  45.                   xmlelem.appendchild(xmldoc.createTextNode('~r~n'))
  46.                   xmlelem.insertBefore(xmldoc.createTextNode('~r~n'), xmlchild)
  47.                   xmlelem = xmlchild
  48.                 case "}"
  49.                   xmlelem = xmlelem.parentNode
  50.                 case "]"
  51.                   xmlelem = xmlelem.parentNode
  52.             end choose 
  53.         case 2                      //Mod 2
  54.             choose case ls_ch                  
  55.                 case '"'
  56.                     li_mode = 3                  
  57.                 case else
  58.                     ls_name = ls_name + ls_ch
  59.             end choose
  60.         case 3                  //Mod 3
  61.             choose case ls_ch
  62.                 case ":"
  63.                   li_mode = 4
  64.             end choose
  65.         case 4                  //Mod 4
  66.             choose case ls_ch
  67.                 case "["
  68.                   xmlchild = xmldoc.createElement(upper(ls_name))
  69.                   xmlelem.appendChild(xmlchild)
  70.                   xmlelem.appendchild(xmldoc.createTextNode('~r~n'))
  71.                   xmlelem.insertBefore(xmldoc.createTextNode('~r~n'), xmlchild)
  72.                   xmlelem = xmlchild
  73.                  
  74.                   ls_name = ""
  75.                   li_mode = 1
  76.                 case "{"
  77.                   xmlchild = xmldoc.createElement(upper(ls_name))
  78.                   xmlelem.appendChild(xmlchild)
  79.                   xmlelem.appendchild(xmldoc.createTextNode('~r~n'))
  80.                   xmlelem.insertBefore(xmldoc.createTextNode('~r~n'), xmlchild)
  81.                   xmlelem = xmlchild
  82.                  
  83.                   ls_name = ""
  84.                   li_mode = 1
  85.                 case '"'
  86.                   ls_value = ""
  87.                   li_mode = 5
  88.                
  89.                 case " "
  90.                 case '~t'
  91.                 case '~n'
  92.                 case '~r'              
  93.                 case else
  94.                   ls_value = ls_ch
  95.                   li_mode = 7
  96.             end choose
  97.         case 5              //Mod 5
  98.         choose case ls_ch
  99.                 case '"'
  100.                   xmlelem.setAttribute(ls_name, ls_value)
  101.                   li_mode = 1
  102.                 case "\"
  103.                   li_mode = 6
  104.                 case else
  105.                   ls_value = ls_value + ls_ch
  106.             end choose
  107.     case 6                  //Mod 6
  108.       ls_value = ls_value + ls_ch
  109.       li_mode = 5
  110.      case 7                 //Mod 7
  111.         if pos(("}], " + '~t' + '~r' + '~n'), ls_ch) = 0 then
  112.             ls_value = ls_value + ls_ch              
  113.       else
  114.         xmlelem.setAttribute(ls_name, ls_value)
  115.         li_mode = 1
  116.             choose case ls_ch
  117.               case "}"
  118.                  xmlelem = xmlelem.parentNode
  119.               case "]"
  120.                  xmlelem = xmlelem.parentNode
  121.             end choose
  122.       end if
  123.        
  124. end choose
  125. loop
  126.  
  127. return 1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement