Witam,
generuję sobie plik xml za pomocą javax.xml.bind.Marshaller
kod do generowania wygląda tak:
javax.xml.bind.Marshaller marshaller = jaxbCtx.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
marshaller.setProperty(javax.xml.bind.Marshaller.JAXB_FORMATTED_OUTPUT,
Boolean.TRUE);
marshaller.marshal(wejscie, out);
Problem w tym, że w wyniku powstają mi pliki wyglądające tak:
<?xml version="1.0" encoding="UTF-8"?>
<Nazwa1 xmlns:prefix="http://www.mynamespace/prefix">
<Nazwa2 ID="1" version="1.0">
<Nazwa3 ID="1">
<Nazwa>123</Nazwa>
<Nazwa4>321</Nazwa4>
</Nazwa3>
</Nazwa2>
</Nazwa1>
a chciałbym wygenerować coś takiego:
<?xml version="1.0" encoding="UTF-8"?>
<prefix:Nazwa1 xmlns:prefix="http://www.mynamespace/prefix">
<prefix:Nazwa2 ID="1" version="1.0">
<prefix:Nazwa3 ID="1">
<prefix:Nazwa>123</prefix:Nazwa>
<prefix:Nazwa4>321</prefix:Nazwa4>
</prefix:Nazwa3>
</prefix:Nazwa2>
</prefix:Nazwa1>
Jak zmusić marshallera do dodania prefixów?
Usiłowałem zrobić coś takiego:
marshaller.setProperty("com.sun.xml.bind.marshaller.NamespacePrefixMapper", new com.sun.xml.bind.marshaller.NamespacePrefixMapper() {
@Override
public String getPreferredPrefix(String string, String string1, boolean bln) {
return "prefix";
}
});
ale mówi mi, że nie ma takiej property.
Jakiś pomysł jak to zrobić?