Entfernen Sie ns2 als Standard-Namespace-Präfix
Ich habe eine Datei, die mit einem Standardnamespace gedruckt wird. Die Elemente werden mit einem Präfix von ns2 gedruckt, ich muss dieses entfernen, wie es mit meinem Code ist:
<ns2:foo xmlns:ns2="http://namespace" />
so möchte ich es haben:
<foo xmlns="http://namespace" />
so habe ich es codiert, was meiner meinung nach ausreichen sollte, damit die ns2 verschwindet:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:bar="http://namespace" targetNamespace="http://namespace"
elementFormDefault="qualified">
...
Die generierte Paket-Info sieht dann so aus:
@javax.xml.bind.annotation.XmlSchema(namespace = "http://namespace",
elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package com.foo.bar;
Ich erstelle die Datei so:
JAXBContext jaxbContext = JAXBContext.newInstance(generatedClassesPackage);
Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
marshaller.marshal(new JAXBElement<Foo>(new QName("http://namespace", "Foo"),
Foo.class, rootFoo), outputStream);
generatedClassesPackage ist das Paket, in dem package-info.java und die Elemente enthalten sind.
Das Foo-Objekt ist definiert und hat Elemente wie dieses:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"group"
})
@XmlRootElement(name = "Foo")
public class Foo {
@XmlElement(name = "Group", required = true)
protected List<Group> group;
Ist es etwas, was ich vermisst habe? oder habe ich falsch verstanden, wie das funktioniert?