2013-08-03 2 views
0

мне нужно ниже формат вывода с помощью JAXBJAXB комплекс к югу XmlRootElement

<?xml version="1.0" encoding="UTF-8"?> 
<tata-sky> 
    <change-package-request> 
     <sub-no>1064781105</sub-no> 
     <ivr-id>ubona_7301341344310891411101430133</ivr-id> 
     <date-time>05/29/2013 00:16:13</date-time> 
     <package-list> 
      <package-ref>Punjabi Regional Free Pack</package-ref> 
      <action-code>Delete</action-code> 
     </package-list> 
    </change-package-request> 
</tata-sky> 

Выходной Iam получая

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<tata-sky> 
    <change-package-request> 
     <sub-no>1064781105</sub-no> 
     <ivr-id>ubona_7301341344310891411101430133</ivr-id> 
     <date-time>05/29/2013 00:16:13</date-time> 
    </change-package-request> 
    <package-ref> 
     <package-ref>Punjabi Regional Free Pack</package-ref> 
     <action-code>Delete</action-code> 
    </package-ref> 
</tata-sky> 

('пакет-исх' должен быть ребенок «изменения-пакета -request'.Below - мой код)

ChangePackage .java

package com.tsg.flow; 

/** 
* 
* @author Shafiq 
*/ 
import javax.xml.bind.annotation.XmlAccessorType; 
import javax.xml.bind.annotation.XmlElement; 
import javax.xml.bind.annotation.XmlElementWrapper; 
import javax.xml.bind.annotation.XmlRootElement; 
import javax.xml.bind.annotation.XmlType; 

@XmlRootElement(name = "tata-sky") 
public class ChangePackage { 

    //@XmlElement(name = "change-package-request", required = true) 
    private ChangepackageRequest changePReq; 


    public void setChangePReq(ChangepackageRequest changePReq) { 
     this.changePReq = changePReq; 
    } 
    @XmlElement(name = "change-package-request") 
    public ChangepackageRequest getChangePReq() { 
     return changePReq; 
    } 
private PackageRef packageList; 


    public void setPackageList(PackageRef packageList) { 
     this.packageList = packageList; 
    } 
@XmlElement(name = "package-ref") 
    public PackageRef getPackageList() { 
     return packageList; 
    } 

    public ChangePackage() { 
    } 
} 

ChangepackageRequest.java

package com.tsg.flow; 

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

/** 
* 
* @author Shafiq 
*/ 
@XmlRootElement(name = "change-package-request") 
@XmlType(propOrder = {"sub_no", "ivr_id", "date_time"}) 
public class ChangepackageRequest { 

    private String sub_no; 
    private String ivr_id; 
    private String date_time; 

    /* private PackageList packageList; 


    public void setPackageList(PackageList packageList) { 
    this.packageList = packageList; 
    } 
@XmlElement(name = "package-ref") 
    public PackageList getPackageList() { 
    return packageList; 
    }*/ 
    //@XmlElementWrapper(name = "change-package-request")  
    @XmlElement(name = "sub-no") 
    public String getSub_no() { 
     return sub_no; 
    } 

    public void setSub_no(String sub_no) { 
     this.sub_no = sub_no; 
    } 

    @XmlElement(name = "ivr-id") 
    public String getIvr_id() { 
     return ivr_id; 
    } 

    public void setIvr_id(String ivr_id) { 
     this.ivr_id = ivr_id; 
    } 

    @XmlElement(name = "date-time") 
    public String getDate_time() { 
     return date_time; 
    } 

    public void setDate_time(String date_time) { 
     this.date_time = date_time; 
    } 
} 

PackageRef.java

package com.tsg.flow; 

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

/** 
* 
* @author Shafiq 
*/ 
@XmlRootElement(name = "package-list") 
@XmlType(propOrder = {"package_ref", "action_code"}) 
public class PackageRef { 
     private String package_ref; 
    private String action_code; 
     // @XmlElementWrapper(name = "package-list") 
    @XmlElement(name = "package-ref") 
    public String getPackage_ref() { 
     return package_ref; 
    } 

    public void setPackage_ref(String package_ref) { 
     this.package_ref = package_ref; 
    } 

    //@XmlElementWrapper(name = "package-list") 
    @XmlElement(name = "action-code") 
    public String getAction_code() { 
     return action_code; 
    } 

    public void setAction_code(String action_code) { 
     this.action_code = action_code; 
    } 
} 

Основной метод: ChangePackageService.java

package com.tsg.flow; 

import javax.xml.bind.JAXBContext; 
import javax.xml.bind.JAXBException; 
import javax.xml.bind.Marshaller; 

/** 
* 
* @author Shafiq 
*/ 
public class ChangePackageService { 

    public static void main(String... args) { 
     // public String createXMLString() { 
     ChangePackage objCP = new ChangePackage(); 
     ChangepackageRequest cr = new ChangepackageRequest(); 

     cr.setSub_no("1064781105"); 
     cr.setIvr_id("ubona_7301341344310891411101430133"); 
     cr.setDate_time("05/29/2013 00:16:13"); 
     PackageRef pl = new PackageRef(); 
     pl.setPackage_ref("Punjabi Regional Free Pack"); 
     pl.setAction_code("Delete"); 
     objCP.setPackageList(pl); 
     objCP.setChangePReq(cr); 


     // create JAXB context and instantiate marshaller 
     JAXBContext context = null; 
     Marshaller m = null; 
     try { 
      context = JAXBContext.newInstance(ChangePackage.class); 
      m = context.createMarshaller(); 
      m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); 
      // Write to System.out 
      //m.marshal(cs, System.out); 
      // Write to File 
      m.marshal(objCP, System.out); 
     } catch (JAXBException ex) { 
      System.out.println("Error XML Generation" + ex.getMessage()); 
      // System.out.println("Exception Occured during marshalling: " + ex.getMessage()); 

     } 

     // return ""; 
     // } 
    } 
} 

Пожалуйста, все отвечаем решение на earliest.Thanks

+0

Вы хотите, чтобы элемент 'package-ref' был дочерним элементом' change-package-request', поэтому не должно быть 'PackageRef' - свойством класса' ChangepackageRequest'? Вы устанавливаете его на экземпляр 'ChangePackage' ... – MattR

ответ

0

Похоже, вы закомментировать часть кода в ChangepackageRequest, который говорит, что JAXB package-list является дочерним change-package-request т.е.

@XmlElement(name = "package-ref") 
public PackageList getPackageList() {` 

что вам нужно будет сделать, это

  • Раскоментируйте что код
  • Update это использовать PackageRef класс вместо PackageList
  • Удалите ссылку на PackageRef из ChangePackage
+0

Привет, Нет его @XmlElement (name =" package-ref ") только .. – Shafiq

0

Я нашел решение ...

в ChangePakageRequest.java

"added @XmlType(propOrder = {""}))" 

поэтому @XmlType(propOrder = {"", "date_time", "ivr_id", "sub_no"}) поэтому он предполагает, что пакет-ref является дочерним поменой пакета-запроса.

+0

Это действительно не похоже на правильный путь решения этой проблемы. Создание 'PackageRef' поля в' ChangeRequestRequest' вместо 'ChangeRequest' является лучшим решением! – GuessBurger