2014-02-14 77 views
0
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
     <action-root> 
     <action name="EMPLOYERS"> 
    <name>EMPLOYERS</name> 
    <version>12</version> 
    <param>5</param> 
     </action> 
    </action-root> 

heey我想打印以下XML文件中的数据在解组等什么改变,我应该做变更我想在Eclipse中创建一个使用JAXB这种类型的XML文件

+0

你应该使用这样@XmlRootElement(名称=“行动 - 根“)公共课ActionRoot – Naren

+0

okk,但我可以创建2类,一个行动和其他对于rep-params,因为我创建了一个只显示一个而不是其他的一个xml文件,即 oadd_location_id monu

+0

你想忽略输出中的总rep-params标签? – Naren

回答

0

我认为你可以做到这一点的方式..它比起上述

ActionRoot.java

package com.naren; 

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

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(name = "", propOrder = { 
    "action" 
}) 
@XmlRootElement(name = "action-root") 
public class ActionRoot { 

    @XmlElement(required = true) 
    private Action action; 

    /** 
    * Gets the value of the action property. 
    * 
    * @return 
    *  possible object is 
    *  {@link ActionRoot.Action } 
    *  
    */ 
    public Action getAction() { 
     return action; 
    } 

    /** 
    * Sets the value of the action property. 
    * 
    * @param value 
    *  allowed object is 
    *  {@link ActionRoot.Action } 
    *  
    */ 
    public void setAction(Action value) { 
     this.action = value; 
    } 

} 

Action.java

是简单

RepParams.java

package com.naren; 

import javax.xml.bind.annotation.XmlAccessType; 
import javax.xml.bind.annotation.XmlAccessorType; 
import javax.xml.bind.annotation.XmlAttribute; 
import javax.xml.bind.annotation.XmlType; 
import javax.xml.bind.annotation.XmlValue; 

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(name = "", propOrder = { "value" }) 
public class RepParams { 
    @XmlAttribute 
    private String name; 

    public String getName() { 
     return name; 
    } 

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

    public int getId() { 
     return id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

    public String getValue() { 
     return value; 
    } 

    public void setValue(String value) { 
     this.value = value; 
    } 

    @XmlAttribute 
    private int id; 
    @XmlValue 
    private String value; 

} 

用于编组TESTXMLGEN.java

package com.naren; 

import java.io.File; 
import java.util.ArrayList; 
import java.util.List; 

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

public class TestXMLGen { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 

     ActionRoot actionRoot = new ActionRoot(); 
     Action action = new Action(); 
     action.setName("EMPLOYERS"); 
     action.setRepNoOfParam((byte) 5); 
     action.setReportVersion((byte) 12); 
     action.setReportName("EMPLOYERS"); 
     List<RepParams> list = new ArrayList<RepParams>(); 

     RepParams repParams = new RepParams(); 
     repParams.setId((byte) 0); 
     repParams.setName("P_LOCATION_ID"); 
     repParams.setValue("oadd_location_id"); 

     RepParams repParams2 = new RepParams(); 
     repParams2.setId((byte) 1); 
     repParams2.setName("P_FINYEAR_ID"); 
     repParams2.setValue("oadd_fin_year_id"); 
     list.add(repParams); 
     list.add(repParams2); 
     action.setRepParams(list); 
     actionRoot.setAction(action); 
     try { 

      File file = new File("file.xml"); 

      JAXBContext jaxbContext1 = JAXBContext 
        .newInstance(ActionRoot.class); 
      Marshaller jaxbMarshaller = jaxbContext1.createMarshaller(); 

      // output pretty printed 
      jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); 

      jaxbMarshaller.marshal(actionRoot, file); 
      jaxbMarshaller.marshal(actionRoot, System.out); 
     } catch (JAXBException e) { 
      e.printStackTrace(); 
     } 

    } 

} 

解编TestUnMarshalXML.java

package com.naren; 

import java.io.File; 
import java.util.List; 

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

public class TestUnMarshalXML { 
    public static void main(String[] args) { 

     try { 

      File file = new File("file.xml"); 
      JAXBContext jaxbContext = JAXBContext.newInstance(ActionRoot.class); 

      Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller(); 
      ActionRoot aroot = (ActionRoot) jaxbUnmarshaller.unmarshal(file); 

      Action action = aroot.getAction(); 
      List<RepParams> repParams=action.getRepParams(); 
      System.out.println(action.getName()+"\t"+action.getReportName()+"\t"+action.getReportVersion()); 
      for(RepParams rp:repParams) 
       System.out.println(rp.getId()+"\t"+rp.getName()+"\t"+rp.getValue()); 

      } catch (JAXBException e) { 
      e.printStackTrace(); 
      } 

     } 
}