Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use Retrofit and SimpleXML together in downloading and parsing an XML file from a site?

Tags:

I just started working with Retrofit. I am working on a project that uses SimpleXML. Can somebody provide me an example in which one fetches an XML from a site e.g. http://www.w3schools.com/xml/simple.xml" and reads it out?

like image 886
greenspand Avatar asked Aug 19 '14 09:08

greenspand


2 Answers

You will create an interface as a new class in your project:

public interface ApiService {     @GET("/xml/simple.xml")     YourObject getUser(); } 

Then in your activity you will call the following:

RestAdapter restAdapter = new RestAdapter.Builder()                     .setEndpoint("http://www.w3schools.com")                     .setConverter(new SimpleXmlConverter())                     .build();  ApiService apiService = restAdapter.create(ApiService.class); YourObject object = apiService.getXML(); 

To get your libraries correctly, in your build.gradle file you need to do the following:

configurations {     compile.exclude group: 'stax'     compile.exclude group: 'xpp3' }  dependencies {     compile fileTree(dir: 'libs', include: ['*.jar'])     compile 'com.squareup.retrofit:retrofit:1.6.1'     compile 'com.mobprofs:retrofit-simplexmlconverter:1.1'     compile 'org.simpleframework:simple-xml:2.7.1'     compile 'com.google.code.gson:gson:2.2.4' } 

Then you need to specify YourObject and add annotations to it according to the structure of the xml file

@Root(name = "breakfast_menu") public class BreakFastMenu {     @ElementList(inline = true)     List<Food> foodList; }  @Root(name="food") public class Food {     @Element(name = "name")     String name;      @Element(name = "price")     String price;      @Element(name = "description")     String description;      @Element(name = "calories")     String calories; } 
like image 193
vandus Avatar answered Sep 18 '22 16:09

vandus


import java.util.ArrayList; import java.util.List;  import org.simpleframework.xml.ElementList; import org.simpleframework.xml.Root;  @Root(name = "breakfast_menu") public class BrakfastMenu   {     @ElementList(inline = true)     protected List<Food> food;      public List<Food> getConfigurations()       {         if (food == null)           {             food = new ArrayList<Food>();           }         return this.food;       }      public void setConfigurations(List<Food> configuration)       {         this.food = configuration;       }    } 
like image 32
greenspand Avatar answered Sep 19 '22 16:09

greenspand