Create and display a cookie with multiple values using XML

If you need to add a cookie containing more information you'll need a method of parsing the data. I used XML on the Trust.org home page on the filters and an abridged version can be seen below (or check vtls on home page):

  1. ##This builds a query item for region  
  2. #if($request.getParameterValues('regions'))  
  3.   
  4.     #foreach ($regions in $request.getParameterValues('regions'))  
  5.         #if ($query_regions)  
  6.             #set ($query_regions = "$!{query_regions} newsItem.regions:*${regions}*")  
  7.             #set ($xml_regions = "$!{xml_regions} <REGION>${regions}</REGION>")  
  8.         #else  
  9.             #set ($query_regions = "newsItem.regions:*${regions}*")  
  10.             #set ($xml_regions = "<REGION>${regions}</REGION>")  
  11.         #end  
  12.     #end  
  13.   
  14.     #if ($query_regions)  
  15.         #set ($query_regions = "+(${query_regions})")  
  16.     #end  
  17.   
  18. #end  
  19.   
  20. ##You can also add single values like so:  
  21. #set ($filterName = "<FILTERNAME>APPLE</FILTERNAME>")  
  22.   
  23. ##Creates the XML format and adds the region from above  
  24. #set ($myXML = "<?xml version='1.0' encoding='ISO-8859-1'?><COOKIE><ITEM>$!{xml_regions}$!{filterName}</ITEM></COOKIE>")  
  25.   
  26. ##Adds the XML above to a cookie  
  27. ##$cookietool.add("CustomQueryCookie","$myXML")  
  28. $response.setHeader("Set-Cookie","CustomQueryCookie=${esc.q}${myXML}${esc.q};expires=Sat, 01-Jan-2093 00:00:00 GMT;path=/;")  
  29.   
  30. ##Gets the XML from the cookie  
  31. #set ($xml = $cookietool.get("CustomQueryCookie").value)  
  32. #set ($myXML = $xmltool.parse($xml))  
  33.   
  34. ##Displays the regions stored in the XML  
  35. #foreach($item in $myXML.children().iterator())  
  36.   
  37.     #set($cdXML = $xmltool.parse($item))  
  38.     $cdXML.TOPIC<br>  
  39.     $cdXML.TOPIC.text  
  40.   
  41. #end  
comments powered by Disqus