arraysvariablesassociative-arraywebharvest

defining array variable in web-harvest


I'm using Web-Harvest to extract some data from a site.
Site gets a POST variable named Code and gives data according to it.
The available codes are gathered from another page of that site.
How Can I define an array like variable to store those data that are related to a Code in a array like variable that make me able to retrieve them with a loop in main program?
I mean something like this:

Data[code1]={key1=val1, key2=val2, key3=val3,...}
Data[code2]={key1=val1, key2=val2, key3=val3,...}
Data[code3]={key1=val1, key2=val2, key3=val3,...}
Data[code4]={key1=val1, key2=val2, key3=val3,...}
...

Solution

  • You can use <script> tag and build an array inside it using BeanShell, Groovy or JavaScript. Default is BeanShell.

    Then expose it to your script with SetContextVar() method or return attribute of the <script>.

    Below is example that builds an array of strings codes and then iterates through them with <loop>.

    <?xml version="1.0" encoding="UTF-8"?>
    
    <config>
        <script><![CDATA[
                String[] codes = new String[] {"one", "two", "three"};
                SetContextVar("codes", codes);
            ]]></script>
    
        <loop item="code">
            <list>
                <var name="codes" />
            </list>
            <body>
                <var name="code" />
            </body>
        </loop>
    </config>
    

    Read more about <script> in the Web-Harvest manual.