我使用了以下代码片段
marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,
Boolean.TRUE);
marshaller.setSchema(getSchema(xsdSchema));
marshaller.setProperty("com.sun.xml.internal.bind.namespacePrefixMapper",
new NamespacePrefixMapper() {
@Override
public String getPreferredPrefix(String arg0, String arg1,
boolean arg2) {
return "tf";
}
});
marshaller.setProperty(Marshaller.JAXB_SCHEMA_LOCATION,
"http://www.xyz.com/tf " + xsdSchema);
marshaller.marshal(obj, new StreamResult(xml));
输出xml:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<tf:abc xmlns:tf="http://www.xyz.com/tf" xmlns:ns2="http://www.w3.org/2001/XMLSchema-instance" ns2:schemaLocation="http://www.xyz.com/tf schema/myxsd.xsd">
如您所见,我用“ns2”代替了“xsi”。
我需要的是 ns2 中的 xsi。
提前致谢。