Search code examples
javaxmljmeterbeanshellreadxml

How to read XML file in JMeter?


I have tried:

//${__FileToString(C:\\QC\\qa\\Testlink\\Jmeter\\Expected\\test.xml,ASCII,${xmlFile})};

Found error message : org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval In file: inline evaluation of: ``//<?xml version="1.0" encoding="UTF-8"?> <feed xmlns="http://www.w3.org/2005/At . . . '' Encountered "<" at line 2, column 1.

also, I tried with ${__StringFromFile} and got the same error message and even with beanshell script that is:

import org.apache.jmeter.services.FileServer;

  //Open the file  
  FileInputStream fstream = new FileInputStream("C://QC//qa//Testlink//Jmeter//Expected//test.xml");  
  //Get the object of DataInputStream  
  DataInputStream instream = new DataInputStream(fstream);  
  BufferedReader br = new BufferedReader(new InputStreamReader(instream));

Solution

  • Try out the following:

    1. Add Beanshell Sampler to your Test Plan
    2. Put the following code into the sampler's "Script" area:

      import org.apache.commons.io.FileUtils;
      
      try {
          String content = FileUtils.readFileToString(new File("C:/QC/qa/Testlink/Jmeter/Expected/test.xml"));
          vars.put("content", content);
      
      } catch (Throwable ex) {
          log.info("Failed to read \"test.xml\" file", ex);
          throw ex;
      }
      
    3. Add Debug Sampler and View Results Tree listener to your Test Plan

    4. Run the test
    5. Make sure that Beanshell Sampler is green and ${content} variable is set. If not - look into jmeter.log file and search for the line Failed to read "test.xml" file. If exception stacktrace below this line tells you nothing - post it here.

    See How to Use BeanShell: JMeter's Favorite Built-in Component guide for more information on using Beanshell in your JMeter test.