This commit is contained in:
Jochen Stärk
2017-11-19 18:20:11 +01:00
parent 3ea71f95e9
commit a2a7a85f05
2 changed files with 33 additions and 0 deletions

View File

@@ -9,6 +9,7 @@ import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import org.mustangproject.ZUGFeRD.model.CrossIndustryDocumentType;
import org.mustangproject.ZUGFeRD.model.ZFNamespacePrefixMapper;
public class ZUGFeRD1PullProvider implements IXMLProvider {
@@ -33,6 +34,7 @@ public class ZUGFeRD1PullProvider implements IXMLProvider {
marshaller = JAXBContext.newInstance("org.mustangproject.ZUGFeRD.model").createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
marshaller.setProperty("com.sun.xml.bind.namespacePrefixMapper", new ZFNamespacePrefixMapper());
} catch (JAXBException e) {
throw new ZUGFeRDExportException("Could not initialize JAXB", e);
}

View File

@@ -0,0 +1,31 @@
package org.mustangproject.ZUGFeRD.model;
import java.util.HashMap;
import java.util.Map;
import com.sun.xml.bind.marshaller.NamespacePrefixMapper;
public class ZFNamespacePrefixMapper extends NamespacePrefixMapper {
private Map<String, String> namespaceMap = new HashMap<>();
/**
* Create mappings.
*/
public ZFNamespacePrefixMapper() {
namespaceMap.put("urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:12", "ram");
namespaceMap.put("urn:un:unece:uncefact:data:standard:UnqualifiedDataType:15", "udt");
namespaceMap.put("urn:ferd:CrossIndustryDocument:invoice:1p0", "rsm");
}
/* (non-Javadoc)
* Returning null when not found based on spec.
* @see com.sun.xml.bind.marshaller.NamespacePrefixMapper#getPreferredPrefix(java.lang.String, java.lang.String, boolean)
*/
@Override
public String getPreferredPrefix(String namespaceUri, String suggestion, boolean requirePrefix) {
return namespaceMap.getOrDefault(namespaceUri, suggestion);
}
}