Java Jaxb-如何避免;xsi:;根元素

Java Jaxb-如何避免;xsi:;根元素,java,xml,xsd,jaxb,Java,Xml,Xsd,Jaxb,我正在使用Java7并尝试使用jaxb从xsd创建xml 我从中生成了Java类 类别1: @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "", propOrder = { "vnr", "meldungsart", "teilnehmeranzahl", "email", "teilnehmer" }) @XmlRootElement(name = "Veranstaltung") public class Veranstaltu

我正在使用Java7并尝试使用jaxb从xsd创建xml

我从中生成了Java类

类别1:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"vnr",
"meldungsart",
"teilnehmeranzahl",
"email",
"teilnehmer"
 })
@XmlRootElement(name = "Veranstaltung")
public class Veranstaltung {

@XmlElement(name = "VNR", required = true)
protected String vnr;
@XmlElement(name = "Meldungsart", required = true)
protected String meldungsart;
@XmlElement(name = "Teilnehmeranzahl")
protected int teilnehmeranzahl;
@XmlElement(name = "EMAIL")
protected String email;
@XmlElement(name = "Teilnehmer")
protected List<Teilnehmer> teilnehmer;
现在,我使用JAXB创建了一个xml:

    JAXBElement<eiv.Veranstaltung> tmp = ObjectFactoryNew
            .createEvent(event);
    JAXBContext jaxbContext = JAXBContext
            .newInstance(eiv.Veranstaltung.class);
    Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
    jaxbMarshaller.setProperty(Marshaller.JAXB_ENCODING, "ISO-8859-15");
    jaxbMarshaller.setProperty("jaxb.noNamespaceSchemaLocation",
            "eiv-punktemeldung.xsd");
    jaxbMarshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.FALSE);

    jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
    jaxbMarshaller.marshal(tmp, System.out);
JAXBElement tmp=ObjectFactoryNew
.createEvent(事件);
JAXBContext JAXBContext=JAXBContext
.newInstance(eiv.Veranstaltung.class);
Marshaller jaxbMarshaller=jaxbContext.createMarshaller();
setProperty(Marshaller.JAXB_编码,“ISO-8859-15”);
jaxbMarshaller.setProperty(“jaxb.noNamespaceSchemaLocation”,
“eiv punktemeldung.xsd”);
setProperty(Marshaller.JAXB_片段,Boolean.FALSE);
setProperty(Marshaller.JAXB_格式化的_输出,true);
jaxbMarshaller.marshall(tmp,System.out);
ObjectFactory.java

@XmlRegistry
private static class ObjectFactoryNew {

    private static final QName EVENT_QNAME = new QName(
            "http://www.w3.org/2001/XMLSchema-instance", "Veranstaltung");

    private ObjectFactoryNew() {

    }

    /**
     * Create an instance of {@link JAXBElement }{@code <}
     * {@link Veranstaltung } {@code >}
     * 
     */
    @XmlElementDecl(namespace = "http://www.w3.org/2001/XMLSchema-instance", name = "Veranstaltung")
    public static JAXBElement<eiv.Veranstaltung> createEvent(
            eiv.Veranstaltung value) {
        return new JAXBElement<eiv.Veranstaltung>(EVENT_QNAME,
                eiv.Veranstaltung.class, null, value);
    }

}
@XmlRegistry
私有静态类ObjectFactoryNew{
私有静态最终QName事件_QName=新QName(
"http://www.w3.org/2001/XMLSchema-instance“,“Veranstaltung”);
私有ObjectFactoryNew(){
}
/**
*创建{@link JAXBElement}{@code}的实例
* 
*/
@XmlElementDecl(命名空间=”http://www.w3.org/2001/XMLSchema-instance“,name=“Veranstaltung”)
公共静态JAXBElement createEvent(
环境影响系数(平均值){
返回新的JAXBElement(事件名称,
eiv.Veranstaltung.class,null,value);
}
}
输出:

<?xml version="1.0" encoding="ISO-8859-15" standalone="yes"?>
<xsi:Veranstaltung xsi:noNamespaceSchemaLocation="eiv-punktemeldung.xsd"      
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<VNR>2760012007000000289</VNR>
<Meldungsart>N</Meldungsart>
<Teilnehmeranzahl>1</Teilnehmeranzahl>
<EMAIL>lukas.mustermann@mailinator.com</EMAIL>
<Teilnehmer>
    <EFN>802760010002185</EFN>
    <Punkte_Basis_JN>J</Punkte_Basis_JN>
    <Punkte_Zusatz_Lernkontrolle_JN>N</Punkte_Zusatz_Lernkontrolle_JN>
    <Punkte_Interaktivitaet_JN>N</Punkte_Interaktivitaet_JN>
    <Punkte_Referent>0</Punkte_Referent>
</Teilnehmer>
</xsi:Veranstaltung>

2760012007000000289
N
1.
卢卡斯。mustermann@mailinator.com
802760010002185
J
N
N
0

我怎样才能避免“xsi:Veranstaltung”?我错了什么?

对你来说是对的

private static final QName EVENT_QNAME = new QName(
            "http://www.w3.org/2001/XMLSchema-instance", "Veranstaltung");  
从文件:

公共QName(字符串名称空间URI, 字符串localPart)
参数:
namespaceURI—QName的命名空间URI
localPart—QName的本地部分

因此,您的根元素
具有名称空间
”http://www.w3.org/2001/XMLSchema-instance“
(别名为xsi)。
如果不需要此命名空间,则应仅使用本地部分创建
QName

private static final QName EVENT_QNAME = new QName("Veranstaltung");
private static final QName EVENT_QNAME = new QName("Veranstaltung");