I Java Modellklassen bin zu erzeugen und ich will javax.xml.bind.annotation.XmlNsForm.QUALIFIED nicht ElementFormDefault- = in meinem package-info.java erscheinen . Ich habe versucht, zwei verschiedene XMLs-ElementFormDefault- = „unqualifizierten“ ignoriert mit XJC
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns="http://www.google.com/Protocol" elementFormDefault="unqualified"
targetNamespace="http://www.google.com/Protocol" xmlns:xs="http://www.w3.org/2001/XMLSchema" >
<xs:element name="A">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" name="User" type="xs:string"/>
<xs:element name="Attr" type="xs:string"/>
<xs:element ref="A1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="A1">
<xs:complexType>
<xs:sequence>
<xs:element name="Attr" type="xs:string"/>
<xs:element minOccurs="0" maxOccurs="1" name="Attr2" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Root">
<xs:complexType>
<xs:choice>
<xs:element ref="A" />
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
Above Xml generiert Paket-info als unten-
@javax.xml.bind.annotation.XmlSchema(namespace = "http://www.google.com/Protocol")
package com.google;
Während auf anderen unter XML-
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns="http://www.google.com/Protocol" elementFormDefault="unqualified"
targetNamespace="http://www.google.com/Protocol" xmlns:xs="http://www.w3.org/2001/XMLSchema" >
<xs:element name="A">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" name="User" type="xs:string"/>
<xs:element ref="A1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="A1">
<xs:complexType>
<xs:sequence>
<xs:element name="Attr" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Root">
<xs:complexType>
<xs:choice>
<xs:element ref="A" />
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
unter package-info.java erzeugt
@javax.xml.bind.annotation.XmlSchema(namespace = "http://www.google.com/Protocol", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package com.google;
Ich will nicht elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED erscheint in meiner Java-Datei. Derzeit muss ich es manuell in elementFormDefault = javax.xml.bind.annotation.XmlNsForm.UNQUALIFIED bearbeiten, sobald das Modell generiert wurde.
Kann jemand bitte helfen, warum elementFormDefault = "unqualifiziert" wird in zweiten XML ignoriert.
Ich überprüfte JAXB und leider erfüllte es nicht den Zweck. Vielen Dank für Ihre Hilfe :) –
Ich fand eine weitere [link] (http://metro.1045641.n5.nabble.com/JAXB-not-especting-elementFormDefault-for-types-mit-only-referred-element-tp1063047p1063048 .html) im Web. Es ist ein XML-Problem und nicht XJC. Ich suche aber immer noch nach einer Lösung. –
Ich bin mir nicht sicher, ob der Kommentar das Problem erfasst. Keine Ahnung, ob JAXB gut zu dir passt oder nicht. Aber mein Punkt war, dass ich nicht denke, dass es irgendwelche Probleme mit den schemadefinierten Elementen und Typen gibt, und mit den generierten Klassen ist nichts falsch. Wenn Sie ein einfaches Beispielprogramm versuchen, das einige Objektinstanzen der generierten JAXB-Klassen serialisiert, sehen Sie, dass das NS-Qualifikationsmerkmal gemäß dem Schema gültig ist. Aber JAXB berücksichtigt auch die Tatsache, dass Sie aus irgendeinem Grund andere Klassen zu diesem Paket hinzufügen können. –