Używanie JAXB JDK bez prefiksu ns2
Po przeczytaniu wszystkich postów na forach Oracle, Stackoverflow, java.net W końcu publikuję tutaj. Używam JAXB do tworzenia plików XML, ale problem polega na tym, że dodaje słynnens2 przedrostek przed moimi elementami, wypróbowałem wszystkie rozwiązania, dla których nikt nie pracował. java -version daje „1.6.0_37”
Rozwiązanie 1: Korzystanie z pakietu-info.java
Stworzyłem plik w moim pakiecie zawierający klasy z adnotacjami my @ Xml * o następującej treści:
@XmlSchema(
namespace = "http://mynamespace",
elementFormDefault = XmlNsForm.QUALIFIED,
xmlns = {
@XmlNs(namespaceURI = "http://mynamespace", prefix = "")
}
)
package com.mypackage;
import javax.xml.bind.annotation.XmlNs;
import javax.xml.bind.annotation.XmlNsForm;
import javax.xml.bind.annotation.XmlSchema;
Rozwiązanie 2: NamespacePrefixMapper
Stworzyłem następującą klasę i ustawiłem program mapujący na komendanta:
// Change mapper to avoid ns2 prefix on generated XML
class PreferredMapper extends NamespacePrefixMapper {
@Override
public String getPreferredPrefix(String namespaceUri, String suggestion, boolean requirePrefix) {
return "";
}
}
NamespacePrefixMapper mapper = new PreferredMapper();
try {
marshaller.setProperty("com.sun.xml.bind.namespacePrefixMapper", mapper);
}
catch (PropertyException e) {
logger.info("No property for com.sun.xml.bind.namespacePrefixMapper found : " + e.getMessage());
}
Zcom.sun.xml.bind.namespacePrefixMapper nic się nie dzieje, zcom.sun.xml.internal.bind.namespacePrefixMapper, rzuca wyjątek.
Dodałem również zależność maven w moim pom, ale wydaje się, że wersja JRE ma wyższy priorytet:
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.2.4</version>
</dependency>
Czy możesz mi w tym pomóc?
PS: Nie mogę bezpośrednio umieścić słoika w mojej ścieżce klasy z powodów związanych z budowaniem. PS2: Nie mogę używać JDK7. Z góry dziękuję.