jaxb xml 生成 java_java-如何使用JAXB定制XML导出

为了进行测试,我使用了JAXB从Object生成XML.这项工作很好.代码如下.

package com.mns.mnsutilities.jaxb.model;

import java.util.List;

import javax.xml.bind.annotation.*;

@XmlRootElement(name="Emp_MNS")

@XmlType(propOrder= {"name", "age", "role", "gender", "addressesList"})

public class Employee {

private int id;

private String gender;

private int age;

private String name;

private String role;

private String password;

private List

addressesList;

public Employee() {}

public Employee(int id, String gender, int age, String name, String role,

String password) {

super();

this.id = id;

this.gender = gender;

this.age = age;

this.name = name;

this.role = role;

this.password = password;

}

public Employee(int id, String gender, int age, String name, String role,

String password, List

addressesList) {

super();

this.id = id;

this.gender = gender;

this.age = age;

this.name = name;

this.role = role;

this.password = password;

this.addressesList = addressesList;

}

@XmlAttribute

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

@XmlElement(name = "gen")

public String getGender() {

return gender;

}

public void setGender(String gender) {

this.gender = gender;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

// @XmlNullPolicy(emptyNodeRepresentsNull = true, nullRepresentationForXml = XmlMarshalNullRepresentation.EMPTY_NODE)

@XmlElement(nillable=true)

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getRole() {

return role;

}

public void setRole(String role) {

this.role = role;

}

@XmlTransient

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

@XmlElement(name = "addresses")

public List

getAddressesList() {

return addressesList;

}

public void setAddressesList(List

addressesList) {

this.addressesList = addressesList;

}

@Override

public String toString() {

return "Employee [id=" + id + ", gender=" + gender + ", age=" + age

+ ", name=" + name + ", role=" + role + ", password="

+ password + ", addressesList=" + addressesList + "]";

}

}

和:

package com.mns.mnsutilities.jaxb.model;

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(namespace="")

public class Address {

private String street;

private String city;

private String zipCode;

private String country;

public Address() {}

public Address(String street, String city, String zipCode, String country) {

super();

this.street = street;

this.city = city;

this.zipCode = zipCode;

this.country = country;

}

public String getStreet() {

return street;

}

public void setStreet(String street) {

this.street = street;

}

public String getCity() {

return city;

}

public void setCity(String city) {

this.city = city;

}

public String getZipCode() {

return zipCode;

}

public void setZipCode(String zipCode) {

this.zipCode = zipCode;

}

public String getCountry() {

return country;

}

public void setCountry(String country) {

this.country = country;

}

@Override

public String toString() {

return "Address [street=" + street + ", city=" + city + ", zipCode="

+ zipCode + ", country=" + country + "]";

}

}

我的主要课程是:

package com.mns.mnsutilities.jaxb.batch;

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;

import javax.xml.bind.Unmarshaller;

import com.mns.mnsutilities.jaxb.model.Address;

import com.mns.mnsutilities.jaxb.model.Employee;

public class LaunchAction {

private static final String FILE_NAME = "output/CT3D_XML_SAMPLE_FINAL.xml";

public static void main(String[] args) {

Employee emp = new Employee();

emp.setId(1);

emp.setAge(25);

emp.setName("Yovan");

emp.setGender("Male");

emp.setRole("Developer");

emp.setPassword("sensitive");

List

addressesList = new ArrayList<>();

Address address1 = new Address("Main Road", "Ebene", "11111", "Mauritius");

Address address2 = new Address("Royal Road", "Rose-Hill", "2222", "Mauritius");

addressesList.add(address1);

addressesList.add(address2);

emp.setAddressesList(addressesList);

jaxbObjectToXML(emp);

Employee empFromFile = jaxbXMLToObject();

System.out.println(empFromFile.toString());

}

private static Employee jaxbXMLToObject() {

try {

JAXBContext context = JAXBContext.newInstance(Employee.class);

Unmarshaller un = context.createUnmarshaller();

Employee emp = (Employee) un.unmarshal(new File(FILE_NAME));

return emp;

} catch (JAXBException e) {

e.printStackTrace();

}

return null;

}

private static void jaxbObjectToXML(Employee emp) {

try {

JAXBContext context = JAXBContext.newInstance(Employee.class);

Marshaller m = context.createMarshaller();

//for pretty-print XML in JAXB

m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);

// Write to System.out for debugging

m.marshal(emp, System.out);

// Write to File

m.marshal(emp, new File(FILE_NAME));

} catch (JAXBException e) {

e.printStackTrace();

}

}

}

XML输出为:

25

Developer

Juggoo

Ebene

Mauritius

Main Road

11111

Rose-Hill

Mauritius

Royal Road

2222

我真正想拥有的是:

25

Developer

Juggoo

**

**

Ebene

Mauritius

Main Road

11111

**

**

**

**

Rose-Hill

Mauritius

Royal Road

2222

**

**

您能指导我如何进行吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值