2017-09-29 1 views
-1

Ich versuche, die cars.xml abzumelden, aber es gibt einen Nullwert zurück. Wenn ich diese Methode mit einem einzigen Auto zu einem xml versucht habe gearbeitet, aber ich habe ein Problem mit einer Liste mit.Unmarshal gibt Nullwerte zurück

Hauptklasse:

import java.io.BufferedReader; 
import java.io.InputStreamReader; 
import java.net.HttpURLConnection; 
import java.net.URL; 
import javax.xml.bind.JAXBContext; 
import javax.xml.bind.Unmarshaller; 

public class Teste { 

    private final String USER_AGENT = "Mozilla/5.0"; 

    public static void main(String[] args) throws Exception { 

    Teste http = new Teste(); 

    System.out.println("Testing 1 - Send Http GET request"); 
    http.sendGet(); 

//  System.out.println("\nTesting 2 - Send Http POST request"); 
//  http.sendPost(); 
    } 

    // HTTP GET request 
    private void sendGet() throws Exception { 

    String url = "http://www.teste.com/cars.xml"; 

    URL obj = new URL(url); 
    HttpURLConnection con = (HttpURLConnection) obj.openConnection(); 

    // optional default is GET 
    con.setRequestMethod("GET"); 

    //add request header 
    con.setRequestProperty("User-Agent", USER_AGENT); 

    int responseCode = con.getResponseCode(); 
    System.out.println("\nSending 'GET' request to URL : " + url); 
    System.out.println("Response Code : " + responseCode); 

    BufferedReader in = new BufferedReader(
      new InputStreamReader(con.getInputStream())); 

    try { 

     //Transforma xml em objeto 
     JAXBContext aXBContext = JAXBContext.newInstance(Cars.class); 
     Unmarshaller cu = aXBContext.createUnmarshaller(); 
     Cars cars = (Cars) cu.unmarshal(in); 



     if(cars != null){ 
     System.out.println("Não é nulo!"); 
     } 

    } catch (Exception e) { 
     System.out.println(e.getMessage()); 
    } 

    } 
} 

Cars Klasse:

import java.util.ArrayList; 
import javax.xml.bind.annotation.XmlElement; 
import javax.xml.bind.annotation.XmlRootElement; 


@XmlRootElement (name = "Cars") 

public class Cars { 
    private ArrayList<Car> cars = new ArrayList<>(); 

    public ArrayList<Car> getCars() { 
    return cars; 
    } 

    @XmlElement 
    public void setCars(ArrayList<Car> cars) { 
    this.cars = cars; 
    } 

} 

Car-Klasse:

import javax.xml.bind.annotation.XmlElement; 
import javax.xml.bind.annotation.XmlRootElement; 

@XmlRootElement(name = "Car") 
public class Car { 

    private String manufacturerCar; 
    private String modelCar; 
    private String doorsCar; 
    private String gearshift; 

    public String getManufacturerCar() { 
    return manufacturerCar; 
    } 

    @XmlElement 
    public void setManufacturerCar(String manufacturerCar) { 
    this.manufacturerCar = manufacturerCar; 
    } 

    public String getModelCar() { 
    return modelCar; 
    } 

    @XmlElement 
    public void setModelCar(String modelCar) { 
    this.modelCar = modelCar; 
    } 

    public String getDoorsCar() { 
    return doorsCar; 
    } 

    @XmlElement 
    public void setDoorsCar(String doorsCar) { 
    this.doorsCar = doorsCar; 
    } 

    public String getGearshift() { 
    return gearshift; 
    } 

    @XmlElement 
    public void setGearshift(String gearshift) { 
    this.gearshift = gearshift; 
    } 

    @Override 
    public String toString() { 
    return "Car{" + "manufacturerCar=" + manufacturerCar + ", modelCar=" + modelCar + ", doorsCar=" + doorsCar + ", gearshift=" + gearshift + '}'; 
    } 
} 

Und die XML:

<Cars> 
<Car> 
<manufacturerCar>VW</manufacturerCar> 
<modelCar>FUSCA</modelCar> 
<doorsCar>2</doorsCar> 
<gearshift>MANUAL</gearshift> 
</Car> 
<Car> 
<manufacturerCar>FORD</manufacturerCar> 
<modelCar>FOCUS</modelCar> 
<doorsCar>4</doorsCar> 
<gearshift>AUTOMATICO</gearshift> 
</Car> 
<Car> 
<manufacturerCar>FIAT</manufacturerCar> 
<modelCar>UNO</modelCar> 
<doorsCar>4</doorsCar> 
<gearshift>MANUAL</gearshift> 
</Car> 
<Car> 
<manufacturerCar>VW</manufacturerCar> 
<modelCar>UP!</modelCar> 
<doorsCar>4</doorsCar> 
<gearshift>AUTOMATICO</gearshift> 
</Car> 
<Car> 
<manufacturerCar>PORSHE</manufacturerCar> 
<modelCar>Q100</modelCar> 
<doorsCar>2</doorsCar> 
<gearshift>AUTOMATICO</gearshift> 
</Car> 
<Car> 
<manufacturerCar>RENAULT</manufacturerCar> 
<modelCar>DUSTER</modelCar> 
<doorsCar>4</doorsCar> 
<gearshift>Manual</gearshift> 
</Car> 
<Car> 
<manufacturerCar>HONDA</manufacturerCar> 
<modelCar>CIVIC</modelCar> 
<doorsCar>4</doorsCar> 
<gearshift>Manual</gearshift> 
</Car> 
<Car> 
<manufacturerCar>MITSUBISHI</manufacturerCar> 
<modelCar>PAJERO</modelCar> 
<doorsCar>4</doorsCar> 
<gearshift>Manual</gearshift> 
</Car> 
</Cars> 

Wenn ich das Projekt entwerfe, gibt es null zurück :(. Ich dachte, dass das Problem die JAXB-Tags wären, aber ich weiß wirklich nicht, wie dieses Problem gelöst wird.

Antwort

Verwandte Themen