2016-03-10 5 views
0

Я попытался использовать другие проблемы, поднятые на этом веб-сайте, но ни один из них не относится к тому, что я делаю.Android simpleXML Element '[element Name]' уже используется

Я пытаюсь «десериализировать» мыло xml, используя simpleXML для приложения для Android. Я все ближе и ближе к этому, но здесь я столкнулся с кирпичной стеной.

Когда я запускаю мой код, я получаю следующее сообщение об ошибке:

org.simpleframework.xml.core.PersistenceException: Element 'serviceOrderCT' is already used with @org.simpleframework.xml.Element(name=, type=void, data=false, required=true) on field 'serviceOrderCT' private serviceOrderCT GetServiceOrdersResult.serviceOrderCT at line 26 

Таким образом, проблема, кажется, с классом в «GetServiceOrdersResult.java» (код ниже), но я не могу поставить свою палец на том, что это.

Я был в этом часами и никуда не ушел.

Помогите пройти эту проблему.

Спасибо.

[EDIT: Вот XML-файл]

<GetServiceOrdersResponse xmlns="http://tempuri.org/"> 
    <GetServiceOrdersResult xmlns:a="http://schemas.datacontract.org/2004/07/MobileWebService" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> 
     <a:serviceOrderCT> 
      <a:_bill_to_Customer_No_>xxxxx</a:_bill_to_Customer_No_> 
      <a:_bill_to_Name>xxxxxxx</a:_bill_to_Name> 
      <a:_customer_No_ i:nil="true" /> 
      <a:_description /> 
      <a:_fix_By_Date>xxxxxxxxxxxxx</a:_fix_By_Date> 
      <a:_fix_By_Time /> 
      <a:_fixed_Date>xxxxxxxxxxxx</a:_fixed_Date> 
      <a:_fixed_Time>xxxxxxxxxxxxxx</a:_fixed_Time> 
      <a:_name>xxxxxxxxxxxxxxx</a:_name> 
      <a:_no_>xxxxxxxxxxxxxxxxxxx</a:_no_> 
      <a:_order_Date>xxxxxxxxxxxxxxx</a:_order_Date> 
      <a:_order_Time>xxxxxxxxxxxxx</a:_order_Time> 
      <a:_responded_Date>xxxxxxxxxxxxxxxxxx</a:_responded_Date> 
      <a:_responded_Time /> 
      <a:_response_Date>xxxxxxxxxxxxxxxxxx</a:_response_Date> 
      <a:_response_Time>xxxxxxxxxxxxxxxxxxxx</a:_response_Time> 
      <a:_transaction_Status>xxxxxxxxxxxxxxx</a:_transaction_Status> 
      <a:_your_Reference /> 
     </a:serviceOrderCT> 
     <a:serviceOrderCT> 
      a:_bill_to_Customer_No_>xxxxx</a:_bill_to_Customer_No_> 
      <a:_bill_to_Name>xxxxxxx</a:_bill_to_Name> 
      <a:_customer_No_ i:nil="true" /> 
      <a:_description /> 
      <a:_fix_By_Date>xxxxxxxxxxxxx</a:_fix_By_Date> 
      <a:_fix_By_Time /> 
      <a:_fixed_Date>xxxxxxxxxxxx</a:_fixed_Date> 
      <a:_fixed_Time>xxxxxxxxxxxxxx</a:_fixed_Time> 
      <a:_name>xxxxxxxxxxxxxxx</a:_name> 
      <a:_no_>xxxxxxxxxxxxxxxxxxx</a:_no_> 
      <a:_order_Date>xxxxxxxxxxxxxxx</a:_order_Date> 
      <a:_order_Time>xxxxxxxxxxxxx</a:_order_Time> 
      <a:_responded_Date>xxxxxxxxxxxxxxxxxx</a:_responded_Date> 
      <a:_responded_Time /> 
      <a:_response_Date>xxxxxxxxxxxxxxxxxx</a:_response_Date> 
      <a:_response_Time>xxxxxxxxxxxxxxxxxxxx</a:_response_Time> 
      <a:_transaction_Status>xxxxxxxxxxxxxxx</a:_transaction_Status> 
      <a:_your_Reference /> 
     </a:serviceOrderCT> 
    </GetServiceOrdersResult> 
    </GetServiceOrdersResponse> 

Envelope.java

import org.simpleframework.xml.Element; 
import org.simpleframework.xml.Root; 

@Root 
public class Envelope { 

    @Element(name = "Body") 
    private Body body; 


    public Body getBody() { 
     return body; 
    } 

} 

Body.java

import org.simpleframework.xml.Element; 
import org.simpleframework.xml.ElementList; 
import org.simpleframework.xml.Path; 
import org.simpleframework.xml.Root; 

import java.util.List; 

public class Body { 

    @Element(name = "GetServiceOrdersResponse") 
    private GetServiceOrdersResponse getServiceOrdersResponse; 

    public GetServiceOrdersResponse getServiceOrdersResponse() { 
     return getServiceOrdersResponse; 
    } 
} 

GetServiceOrdersResponse.java

import org.simpleframework.xml.Element; 
import org.simpleframework.xml.Path; 

public class GetServiceOrdersResponse { 

    @Element(name = "GetServiceOrdersResult") 
    private GetServiceOrdersResult getServiceOrdersResult; 

    public GetServiceOrdersResult getGetServiceOrdersResult() { 
     return getServiceOrdersResult; 
    } 
} 

GetServiceOrdersResult.java

import org.simpleframework.xml.Element; 
import org.simpleframework.xml.ElementList; 
import org.simpleframework.xml.Path; 
import org.simpleframework.xml.Root; 

import java.util.List; 

public class GetServiceOrdersResult { 
    @Element 
    private serviceOrderCT serviceOrderCT; 

    public serviceOrderCT getServiceOrderCT() { 
     return serviceOrderCT; 
    } 
} 

serviceOrderCT

import org.simpleframework.xml.Element; 
import org.simpleframework.xml.Namespace; 
import org.simpleframework.xml.Root; 

public class serviceOrderCT { 

    @Element(name = "_bill_to_Customer_No_", required = false) 
    private String billToCustomerNo; 
    @Element(name = "_bill_to_Name", required = false) 
    private String billToName; 
    @Element(name = "_customer_No_", required = false) 
    private String customerNo; 
    @Element(name = "_description", required = false) 
    private String description; 
    @Element(name = "_fix_By_Date", required = false) 
    private String fixByDate; 
    @Element(name = "_fix_By_Time", required = false) 
    private String fixByTime; 
    @Element(name = "_fixed_Date", required = false) 
    private String fixedDate; 
    @Element(name = "_fixed_Time", required = false) 
    private String fixedTime; 
    @Element(name = "_name", required = false) 
    private String name; 
    @Element(name = "_no_", required = false) 
    private String no; 
    @Element(name = "_order_Date", required = false) 
    private String orderDate; 
    @Element(name = "_order_Time", required = false) 
    private String orderTime; 
    @Element(name = "_responded_Date", required = false) 
    private String respondedDate; 
    @Element(name = "_responded_Time", required = false) 
    private String respondedTime; 
    @Element(name = "_response_Date", required = false) 
    private String responseDate; 
    @Element(name = "_response_Time", required = false) 
    private String responseTime; 
    @Element(name = "_transaction_Status", required = false) 
    private String transactionStatus; 
    @Element(name = "_your_Reference", required = false) 
    private String yourReference; 

    public serviceOrderCT() { 
    } 

    public String getBillToCustomerNo() { 
     return billToCustomerNo; 
    } 

    public void setBillToCustomerNo(String billToCustomerNo) { 
     this.billToCustomerNo = billToCustomerNo; 
    } 

    public String getBillToName() { 
     return billToName; 
    } 

    public void setBillToName(String billToName) { 
     this.billToName = billToName; 
    } 

    public String getCustomerNo() { 
     return customerNo; 
    } 

    public void setCustomerNo(String customerNo) { 
     this.customerNo = customerNo; 
    } 

    public String getDescription() { 
     return description; 
    } 

    public void setDescription(String description) { 
     this.description = description; 
    } 

    public String getFixByDate() { 
     return fixByDate; 
    } 

    public void setFixByDate(String fixByDate) { 
     this.fixByDate = fixByDate; 
    } 

    public String getFixByTime() { 
     return fixByTime; 
    } 

    public void setFixByTime(String fixByTime) { 
     this.fixByTime = fixByTime; 
    } 

    public String getFixedDate() { 
     return fixedDate; 
    } 

    public void setFixedDate(String fixedDate) { 
     this.fixedDate = fixedDate; 
    } 

    public String getFixedTime() { 
     return fixedTime; 
    } 

    public void setFixedTime(String fixedTime) { 
     this.fixedTime = fixedTime; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getNo() { 
     return no; 
    } 

    public void setNo(String no) { 
     this.no = no; 
    } 

    public String getOrderDate() { 
     return orderDate; 
    } 

    public void setOrderDate(String orderDate) { 
     this.orderDate = orderDate; 
    } 

    public String getOrderTime() { 
     return orderTime; 
    } 

    public void setOrderTime(String orderTime) { 
     this.orderTime = orderTime; 
    } 

    public String getRespondedDate() { 
     return respondedDate; 
    } 

    public void setRespondedDate(String respondedDate) { 
     this.respondedDate = respondedDate; 
    } 

    public String getRespondedTime() { 
     return respondedTime; 
    } 

    public void setRespondedTime(String respondedTime) { 
     this.respondedTime = respondedTime; 
    } 

    public String getResponseDate() { 
     return responseDate; 
    } 

    public void setResponseDate(String responseDate) { 
     this.responseDate = responseDate; 
    } 

    public String getResponseTime() { 
     return responseTime; 
    } 

    public void setResponseTime(String responseTime) { 
     this.responseTime = responseTime; 
    } 

    public String getTransactionStatus() { 
     return transactionStatus; 
    } 

    public void setTransactionStatus(String transactionStatus) { 
     this.transactionStatus = transactionStatus; 
    } 

    public String getYourReference() { 
     return yourReference; 
    } 

    public void setYourReference(String yourReference) { 
     this.yourReference = yourReference; 
    } 

} 

Main.java

import org.simpleframework.xml.Serializer; 
import org.simpleframework.xml.core.Persister; 

import java.io.File; 

public class Main { 
    public static void main(String[] args) { 
     try { 
      Serializer serializer = new Persister(); 
      File result = new File("C:\\Users\\xxxxxxxx\\Documents\\file.xml"); 

      Envelope example = serializer.read(Envelope.class, result); 
      System.out.println(example.getBody().getServiceOrdersResponse().getGetServiceOrdersResult().getServiceOrderCT().getBillToCustomerNo()); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 
+0

Что-то не так с KSoap2? Вы пробовали это ...? –

+0

Нет. Я только что добавил файл XML. Я могу получить его из веб-службы, которую я использую. Я просто хочу получить XML и преобразовать его в объекты Java – Chosen1

ответ

-1

Итак, я решить мою проблему, на следующий день после просить о помощи, на моей Еще раз.

Вам необходимо реализовать ElementList, если вы хотите получить все три serviceOrderCT. Он только подбирал один.

Если бы я удалил два других, я бы получил что-то обратно.

Рекомендации для всех, кто это читает, придерживаться официальной документации. Это вам очень поможет. http://simple.sourceforge.net/download/stream/doc/tutorial/tutorial.php#list

Смежные вопросы