Я пытаюсь поддерживать docx4j MOXy как реализацию JAXB.MOXy marshalling wrong object
Мы в значительной степени там; см docx4j and MOXy
Проблема у меня в том, что у меня есть class:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(namespace = "http://schemas.openxmlformats.org/wordprocessingml/2006/main", name = "CT_Text", propOrder = {
"value"
})
@XmlRootElement(name = "t")
public class Text
Moxy является сортировочной это ж: delInstrText, вместо ш: т, что является тем, что я ожидал бы/надежда , и что делают реализации Java 6/reference.
schema От:
<xsd:element name="t" type="CT_Text">
<xsd:annotation>
<xsd:documentation>Text</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="delInstrText" type="CT_Text">
<xsd:annotation>
<xsd:documentation>Deleted Field Code</xsd:documentation>
</xsd:annotation>
</xsd:element>
FWIW, ObjectFactory содержит:
public Text createText() {
return new Text();
}
@XmlElementDecl(namespace = "http://schemas.openxmlformats.org/wordprocessingml/2006/main", name = "delInstrText", scope = R.class)
public JAXBElement<Text> createRDelInstrText(Text value) {
return new JAXBElement<Text>(_RDelInstrText_QNAME, Text.class, R.class, value);
}
Это с Moxy банки:
+- org.eclipse.persistence:org.eclipse.persistence.moxy:jar:2.4.1
| +- org.eclipse.persistence:org.eclipse.persistence.core:jar:2.4.1
| | \- org.eclipse.persistence:org.eclipse.persistence.asm:jar:3.3.1.v201206041142
| \- org.eclipse.persistence:org.eclipse.persistence.antlr:jar:3.2.0.v201206041011
Update:
Вот тестовый пример:
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.Marshaller;
import org.docx4j.wml.R;
import org.docx4j.wml.Text;
public class MOXyTest {
public static void main(String[] args) throws Exception {
JAXBContext jc = JAXBContext.newInstance("org.docx4j.wml");
// System.out.println(Version.getVersion());
// System.out.println(jc.getClass());
R run = new R();
Text text = new Text();
run.getContent().add(text);
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(run, System.out);
}
}
Я обновил вопрос с вариацией вашего демо-кода, который воспроизводит проблему. Благодаря! – JasonPlutext
@JasonPlutext - Спасибо за обновление вашего вопроса. Я обновил свой ответ нашими выводами. –
Проверено, что с eclipselink-2.4.2.v20121107 проблема, похоже, исчезла. Спасибо, что посмотрели на это. – JasonPlutext