我正在使用JAXB来分配一些groovy对象。我得到了这样的输出:
<desiredskillslist>
<employeeDesiredSkills xsi:type="employeeDesiredSkill" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<name>C Development</name>
</employeeDesiredSkills>
<employeeDesiredSkills xsi:type="employeeDesiredSkill" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<name>Perl Development</name>
</employeeDesiredSkills>
<employeeDesiredSkills xsi:type="employeeDesiredSkill" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<name>Java Development</name>
</employeeDesiredSkills>
<employeeDesiredSkills xsi:type="employeeDesiredSkill" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<name>Database Design</name>
</employeeDesiredSkills>
<employeeDesiredSkills xsi:type="employeeDesiredSkill" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<name>Grails Development</name>
</employeeDesiredSkills>
我真的不希望xsi:type=和xmlns:xsi=出现在我的最终文档中,因为它不需要它。这个是可能的吗?
此外,我还设置了一个@XmlElementWrapper(name="desiredskillslist"),将标签放在employeeDesiredSkills周围,但如果可能的话,我将完全没有<employeeDesiredSkillsT>标签--如果itw只是一个名字列表,那就太好了。为什么当我注释ArrayList时,它是这样出现的?
发布于 2010-09-27 16:10:39
我真的不希望xsi:type=和xmlns:xsi=出现在我的最终文档中,因为它不需要它。这有可能吗?
我不知道为什么xsi:type会出现在你面前。正如您在下面的示例中所看到的,它通常不会出现。您的模型与下面的示例有哪些不同的类型?
--我根本就没有标签--如果它只是名字列表,那就太好了。
我相信通过@XmlValue注释可以实现您想要的结果。请参见下面DesiredSkill类上的name属性:
import java.util.*;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Root {
private List<DesiredSkill> employeeDesiredSkills = new ArrayList<DesiredSkill>();
public List<DesiredSkill> getEmployeeDesiredSkills() {
return employeeDesiredSkills;
}
public void setEmployeeDesiredSkills(List<DesiredSkill> employeeDesiredSkills) {
this.employeeDesiredSkills = employeeDesiredSkills;
}
}以及:
import javax.xml.bind.annotation.XmlValue;
public class DesiredSkill {
private String name;
@XmlValue
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}然后是以下代码:
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
public class Demo {
public static void main(String[] args) throws Exception {
Root root = new Root();
DesiredSkill cDev = new DesiredSkill();
cDev.setName("C Development");
root.getEmployeeDesiredSkills().add(cDev);
DesiredSkill perlDev = new DesiredSkill();
perlDev.setName("Perl Development");
root.getEmployeeDesiredSkills().add(perlDev);
JAXBContext jc = JAXBContext.newInstance(Root.class);
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(root, System.out);
}
}将产生:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<root>
<employeeDesiredSkills>C Development</employeeDesiredSkills>
<employeeDesiredSkills>Perl Development</employeeDesiredSkills>
</root>https://stackoverflow.com/questions/3773156
复制相似问题